StatefulSets; 批处理任务控制器Jobs和CronJob 存储控制器PersistentVoloume
标签:
写在前面前面的系列文章已介绍kubernetes架构,安置,升级和快速入门,读者通过文章的实操已对kubernetes已有初阶的认识和理解,从本章开始逐步介绍kubernetes中的根本观点观点和核心观点,根本观点包孕:namespace,labels,annotations,pods,volumes等;核心观点包罗kubernetes中各类controller,包罗以下几种:
应用副本控制器有:Deployments,ReplicaSets,DaemonSets,StatefulSets;
批措置惩罚惩罚任务控制器Jobs和CronJob
存储控制器PersistentVoloume,PersistentVolumeClaim,StorageClass;
处事负载均衡Service,Ingress,NetworkPolicy和DNS名称解析;
配置和密钥ConfigMaps和Secrets
本文从最根本的观点pod开始讲解,后续逐步介绍应用部署,存储,负载均衡等相关的控制器,kubernetes内部由多个差此外控制器构成,每个控制器完成差此外成果。
1. 深入学习pod 1.1 Container介绍容器是一种便携式,轻量级另外容器虚拟化技术,使用linux cggroup技术实现各类资源的断绝,如cpu,memory,pid,mount,IPC等,对比于虚拟化技术如KVM,容器技术越发轻量级,它的孕育产生主要解决环境的环境颁布的问题,目前主流的容器技术是docker,说到容器,一般都等同于docker。
要运行容器首先需要有镜像,应用和应用依赖的环境运行在容器中,在kubernetes中不会直接运行container,而是运行pod,一个pod里面包罗多个container,container之间共享不异的namespace,network,storage等。镜像存储在私有镜像或者公有镜像中,运行时通过docker image pull的方法拉取到本地运行,images的拉取计谋包罗有两种:
ImagePullPolicy为Always,不管本地是否有直接下载
ImagePullPolicy为IfNotPresent,默认镜像拉取得计谋,本地不存在再拉取
1.2 Pod观点介绍Pods是kubernetes中最小的调理单位,Pods内运行一个或者多个container,container之间共享pod的网络ip资源,存储volume资源,计算等资源,便利pod内部的container之间能够实现快速的访谒和交互。
如上图所示,Pod的使用方法凡是包罗两种:
Pod中运行一个容器,最经常使用的模式,container封装在pod中调理,两者几乎等同,但k8s不直接打点容器
Pod中运行多个容器,多个容器封装在pod中一起调理,适用于容器之间有数据交互和挪用的场景,如app+redis,pod内部共享不异的网络定名空间,存储定名空间,进程定名空间等。
1.3 如何创建podkubernetes中通过界说生申明式的方法界说资源,即通过在yaml文件中界说所需的资源,kubernetes通过controller-manager凭据yaml文件中界说的资源去生成所需的资源(match the current state to desired state)。凡是在kubernetes中通过yaml文件的方法界说资源,然后通过kubectl create -f 文件.yaml的方法应用配置,如下演示创建一个nginx应用的操纵。
1、编写yaml文件,界说一个pod资源
[[email protected] demo]# cat nginx.yaml apiVersion: v1 kind: Pod metadata: name: nginx-demo labels: name: nginx-demo spec: containers: - name: nginx-demo image: nginx:1.7.9 imagePullPolicy: IfNotPresent ports: - name: nginx-port-80 protocol: TCP containerPort: 80关于配置文件,说明如下:
apiVersion api使用的版本,kubectl api-versions可检察到当前系统能撑持的版本列表
kind 指定资源类型,暗示为Pod的资源类型
metadata 指定Pod的元数据,metadata.name指命名称,metadata.labels指定Pod的所属的标签
spec 指定Pod的模版属性,spec.containers配置容器的信息,spec.containers.name指命名字,spec.containers.image指定容器镜像的名称,spec.containers.imagePullPolicy是镜像的下载方法,IfNotPresent暗示当镜像不存在时下载,spec.containers.ports.name指定port的名称,spec.containers.ports.protocol协议类型为TCP,spec.containers.ports.containerPort为容器端口。
2、创建pod应用
[[email protected] demo]# kubectl apply -f nginx.yaml pod/nginx-demo created3、访谒应用
获取容器的IP地点 [[email protected] demo]# kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES demo-7b86696648-8bq7h 1/1 Running 0 8h 10.244.1.11 node-2 <none> <none> demo-7b86696648-8qp46 1/1 Running 0 8h 10.244.1.10 node-2 <none> <none> demo-7b86696648-d6hfw 1/1 Running 0 8h 10.244.1.12 node-2 <none> <none> nginx-demo 1/1 Running 0 50s 10.244.2.11 node-3 <none> <none> 访谒站点内容: [[email protected] demo]# curl <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html>温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/31424.html
- 上一篇:选择合适的事件
- 下一篇:项目右键》maven update project更新一下