1. 编写 Deployment YAML 文件
在 Kubernetes 中,创建一个 Deployment 资源时,需要使用 YAML 文件来描述它的配置。这个文件会指定如下内容:
- 副本数 (replicas):定义需要运行的 Pod 副本的数量。例如,在这个例子中是 3 个副本。
- Pod 模板 (template):定义了每个 Pod 的配置,包括容器的镜像、端口、健康检查等。
- 选择器 (selector):用于确定哪些 Pod 属于该 Deployment,通过标签选择匹配的 Pods。
示例 YAML 文件(创建一个运行 Nginx 服务的 Deployment):
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
这个 YAML 文件定义了一个名为 my-nginx-deployment
的 Deployment,它会运行 3 个 Nginx 容器副本,暴露容器的端口 80。
2. 应用 Deployment 配置
使用 kubectl apply
命令将上述 YAML 文件应用到 Kubernetes 集群中:
kubectl apply -f deployment.yaml
kubectl
命令会将 YAML 文件中定义的资源配置发送给 Kubernetes API Server,API Server 会解析并验证文件内容,并将其保存到 etcd(Kubernetes 的配置存储系统)中。
3. Kubernetes 处理过程
- API Server:接收并解析 YAML 文件后,Kubernetes API Server 会验证配置并将 Deployment 资源对象存储在 etcd 集群中。
- Deployment Controller:在 Deployment 创建后,Deployment Controller 会检测到新的资源对象,并开始确保期望的 Pod 副本数量(在此例中为 3)存在并运行。它还会持续监控 Deployment 的状态。
4. 创建和调度 Pod
- Kubernetes Scheduler:根据 Deployment 中的 Pod 模板,Scheduler 会选择合适的节点来运行 Pod。
- Kubelet:每个选定的节点上的 Kubelet 会拉取所需的容器镜像(这里是
nginx:1.21.6
),并在节点上启动这些 Pod。
5. 健康检查与自动恢复
- Liveness Probe 和 Readiness Probe:在 Pod 的配置中,通常会定义健康检查(如 liveness 和 readiness probes)。这些 probes 用于检测容器是否健康。若 Pod 不健康,Kubelet 会根据 Deployment 配置的策略自动重启 Pod。
- 自我修复:如果某个 Pod 由于故障或其他原因停止运行,Deployment 控制器会根据配置的副本数(在本例中是 3)自动启动新 Pod,确保系统持续满足副本数量的要求。
总结
通过以上步骤,Kubernetes 会确保你的应用始终保持高可用和可靠性。具体过程如下:
- 通过 YAML 文件定义 Deployment 资源。
- 使用
kubectl apply
命令提交该文件。 - Kubernetes 系统根据定义的规则创建、调度和管理 Pod,确保应用持续运行,并根据健康检查自动修复故障。
这些步骤使得 Kubernetes 提供了一个强大的平台,帮助用户实现应用的高效部署、扩展和管理。
标签:副本,Kubernetes,哪些,创建,deploy,YAML,nginx,Deployment,Pod From: https://www.cnblogs.com/leojazz/p/18688698