kubernetes核心技术之Controller控制器知识总结

本文涉及的产品
云原生网关 MSE Higress,422元/月
应用实时监控服务-应用监控,每月50GB免费额度
可观测监控 Prometheus 版,每月50GB免费额度
简介: kubernetes核心技术之Controller控制器知识总结

Replication Controller

Replication Controller(RC)Kubernetes系统中核心概念之一, 当我们定义了一个 RC并提交到 Kubernetes 集群中以后, Master节点上的 Controller Manager组件就得到通知,定期检查系统中存活的 Pod,并确保目标 Pod 实例的数量刚好等于 RC 的预期值, 如果有过多或过少的 Pod 运行, 系统就会停掉或创建一些 Pod.此外我们也可以通过修改 RC 的副本数量, 来实现 Pod 的动态缩放功能。

1、创建nginx的RC yaml文件

apiVersion: v1
kind: ReplicationController
metadata:
  name: myweb
spec:
  replicas: 2
  selector:
    app: myweb
  template:
    metadata:
      labels:
        app: myweb
    spec:
      containers:
       - name: myweb
         image: reg.harbor.com/public/nginx:1.18.0
         imagePullPolicy: IfNotPresent
         ports:
         - containerPort: 80

2、创建RC资源

[root@master1 rc]# ls
nginx_rc.yaml
[root@master1 rc]# kubectl create -f nginx_rc.yaml
replicationcontroller/myweb created
[root@master1 rc]# kubectl get rc myweb
NAME    DESIRED   CURRENT   READY   AGE
myweb   2         2         2       22s
[root@master1 rc]# kubectl get pod
NAME          READY   STATUS    RESTARTS   AGE
myweb-flbpm   1/1     Running   0          40s
myweb-td2ql   1/1     Running   0          40s
[root@master1 rc]#

Pod和Controller的关系:

Pod是通过Controller实现应用的运维比如伸缩、滚动升级等等

Pod和Controller之间是通过label标签建立关系

由于Replication Controller 与 Kubernetes 代码中的模块 Replication Controller 同名,所以在 Kubernetes v1.2 时, 它就升级成了另外一个新的概念 Replica Sets,官方解释为下一代的 RC, 它与 RC 区别是:Replica Sets 支援基于集合的 Label selector,而 RC 只支持基于等式的 Label Selector。 我们很少单独使用 Replica Set,它主要被 Deployment 这个更高层面的资源对象所使用, 从而形成一整套 Pod 创建、 删除、 更新的编排机制。 最好不要越过 RC 直接创建 Pod, 因为 Replication Controller 会通过 RC 管理 Pod 副本, 实现自动创建、 补足、 替换、 删除 Pod 副本, 这样就能提高应用的容灾能力, 减少由于节点崩溃等意外状况造成的损失。 即使应用程序只有一个 Pod 副本, 也强烈建议使用 RC 来 定义 Pod

Replicat Set

ReplicaSet ReplicationController 没有本质的不同, 只是名字不一样, 并且ReplicaSet 支持集合式的 selectorReplicationController 仅支持等式) 。Kubernetes 官方强烈建议避免直接使用 ReplicaSet, 而应该通过 Deployment 来创建 RSPod。 由于 ReplicaSet ReplicationController 的代替物, 因此用法基本相同, 唯一的区别在于 ReplicaSet 支持集合式的 selector

Deployment

Deployment Kubenetes v1.2 引入的新概念, 引入的目的是为了更好的解决 Pod 的编排问题, Deployment内部使用了 Replica Set 来实现。 Deployment 的定义与 Replica Set 的定义很类似, 除了 API 声明与 Kind 类型有所区别:

使用如下命令导出deployment的yaml模板:

kubectl create deployment nginx-deploy --image=nginx --dry-run -o yaml > nginx_deploy.ymal
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx-deploy
  name: nginx-deploy
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx-deploy
  template:
    metadata:
      labels:
        app: nginx-deploy
    spec:
      containers:
      - image: reg.harbor.com/public/nginx:1.18.0
        name: nginx
        ports:
        - containerPort: 80
相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
2月前
|
运维 Kubernetes Docker
深入理解容器化技术:Docker与Kubernetes的协同工作
深入理解容器化技术:Docker与Kubernetes的协同工作
74 12
|
2月前
|
运维 Kubernetes Cloud Native
云原生技术入门:Kubernetes和Docker的协同工作
【10月更文挑战第43天】在云计算时代,云原生技术成为推动现代软件部署和运行的关键力量。本篇文章将带你了解云原生的基本概念,重点探讨Kubernetes和Docker如何协同工作以支持容器化应用的生命周期管理。通过实际代码示例,我们将展示如何在Kubernetes集群中部署和管理Docker容器,从而为初学者提供一条清晰的学习路径。
|
2月前
|
Kubernetes 监控 安全
容器化技术:Docker与Kubernetes的实战应用
容器化技术:Docker与Kubernetes的实战应用
|
2月前
|
存储 Kubernetes 调度
【赵渝强老师】K8s中Deployment控制器与StatefulSet控制器的区别
K8s中的Deployment控制器用于管理无状态应用程序,关注Pod数量、更新方式等;而StatefulSets控制器则管理有状态应用程序,提供持久存储和唯一标识符,适用于需要稳定网络标识符和持久化存储的场景。两者的主要区别在于是否维护状态和顺序。
|
2月前
|
存储 Kubernetes 调度
【赵渝强老师】K8s的有状态控制器StatefulSet
在Kubernetes中,StatefulSets用于部署有状态应用程序,提供持久存储和唯一标识符。与Deployment不同,StatefulSets确保Pod的标识符在重新调度后保持不变,适用于需要稳定网络标识符和持久存储的场景。本文介绍了StatefulSets的创建、扩容与缩容、更新与回滚等操作,并提供了具体示例和视频讲解。
102 0
|
2月前
|
Kubernetes Linux 调度
【赵渝强老师】K8s的周期性任务控制器CronJob
本文介绍了K8s中的CronJob控制器,它类似于Linux的crontab命令,用于管理和调度定时作业。CronJob可以设置在未来某一时间运行作业一次或在指定时间点重复运行作业。文章通过一个示例展示了如何创建和使用CronJob控制器,包括创建配置文件、应用配置、查看Pod信息和日志等步骤。同时,还解释了CronJob的时间表示方式及其限制。
|
2月前
|
Kubernetes 调度 容器
【赵渝强老师】K8s的Job控制器多工作队列的并行方式
Kubernetes Job 是一次性任务控制器,用于控制 Pod 中的容器执行特定任务。本文介绍了 Job 控制器的工作原理、运行方式及多工作队列并行执行的示例。示例中创建了 5 个作业,以 3 个队列并行执行,整个过程需 2 分钟。文中还提供了详细的 YAML 文件配置和执行命令。
|
4天前
|
缓存 容灾 网络协议
ACK One多集群网关:实现高效容灾方案
ACK One多集群网关可以帮助您快速构建同城跨AZ多活容灾系统、混合云同城跨AZ多活容灾系统,以及异地容灾系统。
|
17天前
|
Prometheus Kubernetes 监控
OpenAI故障复盘 - 阿里云容器服务与可观测产品如何保障大规模K8s集群稳定性
聚焦近日OpenAI的大规模K8s集群故障,介绍阿里云容器服务与可观测团队在大规模K8s场景下我们的建设与沉淀。以及分享对类似故障问题的应对方案:包括在K8s和Prometheus的高可用架构设计方面、事前事后的稳定性保障体系方面。
|
14天前
|
Kubernetes Ubuntu 网络安全
ubuntu使用kubeadm搭建k8s集群
通过以上步骤,您可以在 Ubuntu 系统上使用 kubeadm 成功搭建一个 Kubernetes 集群。本文详细介绍了从环境准备、安装 Kubernetes 组件、初始化集群到管理和使用集群的完整过程,希望对您有所帮助。在实际应用中,您可以根据具体需求调整配置,进一步优化集群性能和安全性。
61 12

相关产品

  • 容器服务Kubernetes版