• K8s中的控制器和资源对象是什么关系呢?


    K8s中的控制器和资源对象是什么关系呢?

    Kubernetes(简称k8s)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。在Kubernetes中,控制器和资源对象是两个核心概念,它们共同构成了Kubernetes的架构。

    一、控制器

    控制器是Kubernetes中的管理组件,负责管理集群中的资源对象。它们通过API服务器与资源对象进行交互,确保集群的状态与期望的状态保持一致。Kubernetes有以下几种类型的控制器:

    1. 副本控制器(ReplicaSet):确保Pod的副本数量与预期的数量一致。
    2. 端点控制器(EndpointsController):自动维护Service与Pod之间的关联关系。
    3. 服务帐户和令牌控制器(ServiceAccount & TokenControllers):为每个命名空间自动创建服务帐户和API访问令牌。
    4. 名称空间控制器(NamespaceController):当创建新的命名空间时,会自动创建一些必要的资源对象。
    5. 节点控制器(NodeController):负责发现和删除节点。
    6. 路由管理器(RouteController):负责维护网络路由。

    二、资源对象

    资源对象是Kubernetes中的基本管理单元,它们是用户通过API服务器操作的对象。以下是Kubernetes中的一些主要资源对象:

    1. Pod:一组紧密耦合的容器,共享存储和网络空间,是Kubernetes的基本调度单位。
    2. Service:定义了一组Pod的访问策略,实现了负载均衡和服务发现。
    3. Deployment:用于管理Pod副本的模板,可以定义副本数量、更新策略等。
    4. StatefulSet:用于管理有状态应用的Pod副本,保证每个副本有一个唯一的标识符。
    5. ConfigMap:用于存储配置信息,可以在Pod中使用。
    6. Secret:用于存储敏感信息,如密码、密钥等。

    下面是一个简单的Deployment和Service的YAML配置文件示例:

    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: my-image:latest
            ports:
            - containerPort: 80
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: my-service
    spec:
      selector:
        app: my-app
      ports:
        - protocol: TCP
          port: 80
          targetPort: 80
      type: LoadBalancer
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    在这个示例中,我们创建了一个名为my-deployment的Deployment,它管理着3个副本的Pod。每个Pod中运行一个名为my-container的容器,使用的是my-image:latest镜像,并暴露了80端口。同时,我们还创建了一个名为my-service的Service,它将流量负载均衡到标签为app=my-app的Pod上。

    结尾

    总之,控制器和资源对象是Kubernetes的核心组件,它们共同确保了集群的稳定运行和资源的高效管理。通过学习和掌握这些概念,我们可以更好地理解和使用Kubernetes来部署和管理容器化应用程序。

  • 相关阅读:
    TypeScript——泛型理论与实践
    网络自动化运维(NetDevOps)创作者推荐
    Vue3快速入门
    记录一次dma_alloc_coherent失败的解决
    fix: prosemirror adds two extra spaces when paste
    uni-app:实现元素在屏幕中的居中(绝对定位absolute)
    什么是腾讯云web应用防火墙?有哪些优势以及适用于什么场景?
    Springboot毕设项目公司实习生培训系统p79f6(java+VUE+Mybatis+Maven+Mysql)
    AWS Systems Manager(SSM)
    AIGC:python 文生图代码(python + stable-diffusion+ cuda)
  • 原文地址:https://blog.csdn.net/qiaomuv/article/details/136816878