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

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
性能测试 PTS,5000VUM额度
简介: 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
相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
30天前
|
运维 Kubernetes 监控
Kubernetes详解(十九)——Kubernetes Pod控制器
Kubernetes详解(十九)——Kubernetes Pod控制器
42 3
|
8天前
|
运维 Kubernetes Cloud Native
云原生时代的技术革命:Kubernetes与容器编排
【6月更文挑战第17天】在数字化转型的浪潮中,云原生技术正成为推动企业IT架构现代化的核心力量。本文将深入探讨Kubernetes作为云原生生态中的佼佼者,如何引领容器编排的技术革命,并分析其在现代应用部署、管理和扩展中的关键作用。通过实例和案例分析,我们将揭示Kubernetes如何助力企业实现更高效、灵活和可靠的云原生应用管理。
|
16天前
|
运维 Kubernetes 持续交付
Docker与Kubernetes:容器化技术的黄金搭档
【6月更文挑战第10天】Docker和Kubernetes是容器化技术的黄金组合,Docker提供轻量级、可移植的容器引擎,简化应用部署,而Kubernetes作为容器编排系统,实现自动化部署、扩展和管理,确保高可用性和可扩展性。两者的协作使得容器化应用更高效、可靠,共同推动软件开发和运维的创新。
|
6天前
|
Kubernetes 前端开发 微服务
实操教程丨如何在K8S集群中部署Traefik Ingress Controller
实操教程丨如何在K8S集群中部署Traefik Ingress Controller
|
30天前
|
运维 Kubernetes Linux
Kubernetes详解(二十一)——ReplicaSet控制器实战应用
Kubernetes详解(二十一)——ReplicaSet控制器实战应用
60 2
|
30天前
|
弹性计算 运维 Kubernetes
Kubernetes详解(二十)——ReplicaSet控制器
Kubernetes详解(二十)——ReplicaSet控制器
27 1
|
1月前
|
Kubernetes 持续交付 调度
为什么是容器编排技术
**容器编排**是自动化容器部署、管理和扩展的技术,它使得构建跨容器应用、集群调度、健康检查和弹性伸缩变得自动化。Kubernetes是最流行的容器编排平台,提供自动化部署、服务发现、故障恢复和扩展性。学习Kubernetes时,理解其作为面向终态系统的理念很重要,从单个容器开始,结合实践进行学习能提高效率。Kubernetes是Google开源的容器编排引擎,支持自动化部署、可伸缩性和容器管理,其核心概念包括Pod、Controller、Workload、Service、PV/PVC、Namespace和etcd。
|
30天前
|
Kubernetes 物联网 区块链
未来技术的脉动:区块链、物联网和虚拟现实的新纪元Kubernetes 集群性能优化实践
【5月更文挑战第27天】 随着科技的飞速发展,新兴技术如区块链、物联网(IoT)和虚拟现实(VR)正在重塑我们的世界。这些技术不仅在逐步成熟,而且在各个行业中找到了创新的应用。区块链技术以其不可篡改和去中心化的特性,为金融交易、供应链管理和身份验证提供了新的解决方案。物联网通过智能设备和系统的互联互通,优化了资源管理并提升了生活品质。而虚拟现实技术则在娱乐、教育和医疗等领域创造了沉浸式体验。本文将深入探讨这些技术的发展趋势和多样化应用场景,展望它们如何共同塑造未来社会的面貌。
|
25天前
|
Kubernetes 微服务 容器
Aspire项目发布到远程k8s集群
Aspire项目发布到远程k8s集群
376 2
Aspire项目发布到远程k8s集群
|
13天前
|
Kubernetes Cloud Native 微服务
微服务实践之使用 kube-vip 搭建高可用 Kubernetes 集群
微服务实践之使用 kube-vip 搭建高可用 Kubernetes 集群
195 3

相关产品

  • 容器服务Kubernetes版