在kubernetes中,创建一个Deployment的过程主要包括以下步骤:
1、编写Deployment YAML文件:
首先,需要使用yaml格式编写一个描述Deployment的配置文件。这个文件定义了Deployment的关键属性,如副本数(replicas)、容器镜像、Pod模板以及健康检查等。例如,创建一个运行Nginx服务的Deployment,可以编写如下yaml文件:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nginx-deployment
spec:
replicas: 3 # 副本数量为3个
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.21.6 # 使用Nginx 1.21.6版本镜像
ports:
- containerPort: 80
2、应用Deployment配置:
使用kubectl
工具将上面编写的yaml文件应用到kubernets集群中,执行命令:
kubectl apply -f deployment.yaml
3、kubernetes处理过程:
- kubernetes API Server接收到
kubectl
发送到创建请求后,解析并验证yaml文件中的资源配置 - 根据提供的信息创建一个新的Deployment资源对象,并持久化存储在etcd集群中
- Deployment Conctroller检测到新的或更新的资源对象后开始工作,会确保指定数量的Pod实例,根据Pod模板被创建和管理
4、创建和调度Pod:
- 根据Deployment的Pod模板,kubernetes Scheduler负责将Pod调度到合适的Node节点上
- Kubelet在每个指定的Node上启动Pod,并拉取指定的容器镜像(这里指的是Nginx镜像)进行运行
5、健康检查与自动恢复:
- 如果Pod未通过
Liveness Probes
或Readiness Probes
健康检查,Kubelet会按照Deployment的策略自动重启Pod - 在整个生命周期内,Deployment控制器会持续监控Pod的数量和状态,确保任何时候都有期望数量的可用Pod实例