作者信息:https://home.cnblogs.com/u/huangjiabobk

在K8S中,deployment的创建过程包括什么?

在Kubernetes(K8S)中,Deployment的创建过程是一个涉及多个组件和步骤的复杂流程。以下是一个详细的步骤说明,包括从创建Deployment配置文件到Pod在集群中实际运行的整个过程:

1. 创建Deployment配置文件

首先,需要准备一个YAML格式的配置文件,用于定义Deployment的属性。这个配置文件包含了Deployment的元数据(如名称、命名空间)、规格说明(如副本数量、Pod模板、容器配置等)。以下是一个简单的示例配置文件:

apiVersion: apps/v1  
kind: Deployment  
metadata:  
  name: my-deployment  
spec:  
  replicas: 3  
  selector:  
    matchLabels:  
      app: my-app  
  template:  
    metadata:  
      labels:  
        app: my-app  
    spec:  
      containers:  
      - name: my-container  
        image: nginx:latest  
        ports:  
        - containerPort: 80
2. 提交Deployment配置文件到APIServer

使用kubectl命令行工具将配置文件提交到Kubernetes集群的APIServer。这个过程中,APIServer会进行认证鉴权、校验等操作,确保请求的有效性。

kubectl apply -f my-deployment.yaml
3. APIServer处理请求并存储到Etcd

一旦APIServer验证了请求的有效性,它会将Deployment的信息存储到集群的分布式键值存储系统Etcd中。Etcd是Kubernetes用于持久化存储集群状态数据的组件。

4. Controller Manager监听并处理资源变化

Controller Manager是Kubernetes的控制中心,它监听Etcd中的资源变化事件。当新的Deployment被创建时,Deployment Controller会检测到这个事件,并开始处理它。

5. 创建ReplicaSet

Deployment Controller会根据Deployment配置文件中的规格说明,创建一个或多个ReplicaSet对象。ReplicaSet负责确保Pod的副本数量符合期望的状态。

6. ReplicaSet创建Pod

ReplicaSet Controller监听ReplicaSet的创建事件,并根据ReplicaSet的规格说明(通过Pod模板)创建相应数量的Pod。Pod是Kubernetes中可以创建和管理的最小计算单元,包含了容器和容器的配置信息。

7. Scheduler为Pod分配节点

Kube-Scheduler是Kubernetes的调度器,它监听新创建的Pod事件,并根据调度策略(如节点亲和性、污点、容忍、硬件资源等)为Pod选择一个合适的节点。调度完成后,Kube-Scheduler会将Pod与节点的绑定信息写回Etcd。

8. Kubelet在节点上运行Pod

节点上的Kubelet进程监听Etcd中的Pod变化事件。当发现有新的Pod被调度到本节点时,Kubelet会调用容器运行时(如Docker、containerd等)来创建和启动容器。同时,Kubelet还负责Pod的生命周期管理,包括健康检查、日志收集等。

9. Pod和Service网络通信

Kube-Proxy是运行在集群各个节点上的网络代理,它负责实现服务发现和负载均衡。当有外部请求访问服务时,Kube-Proxy会根据服务的Endpoints信息将请求转发到正确的Pod或容器上。

10. 总结

综上所述,Deployment的创建过程是一个高度自动化的流程,涉及多个Kubernetes组件的协同工作。从创建Deployment配置文件到Pod在集群中实际运行,整个流程遵循关注点分离的原则,确保每个组件都能专注于自己的工作。这种设计使得Kubernetes能够高效地管理大规模容器化应用的部署和运维。

posted @ 2024-08-06 15:39  黄嘉波  阅读(66)  评论(0编辑  收藏  举报
版权声明:原创作品,谢绝转载!否则将追究法律责任。--作者 黄嘉波