kubernetes 控制器 Dockerfile

在 Kubernetes 中,控制器被用来监控集群的公共状态,并将当前状态转变为预先设置的期望状态。

作为设计原则之一,Kubernetes 使用了很多控制器,每个控制器管理着集群状态的一个特定方面。

1.ReplicaSet

ReplicationController 用来确保在任何时候都有特定数量的 Pod 副本处于运行状态。换句话说, ReplicationController 能够确保一个 Pod 或一组同类的 Pod 总是可用的。

ReplicaSet 的目的是维护一组在任何时候都处于运行状态的 Pod 副本的稳定集合。因此,它通常用来保证给定数量的、完全相同的 Pod 的可用性。推荐使用配置了 ReplicaSet 的 Deployment 来 建立副本管理机制。
使用 nginx 镜像创建具有 3 个 pod 的 RS,并分配合适的标签:

删除的 Pod 消失了,但马上又有一个新的 Pod 被自动创建出来,总数依然维持在 3 个。这就是 ReplicaSet 在背后默默工作,保证了业务的连续性。

2.Deployment

ReplicaSet 确保了任何时间都有指定数量的 Pod 副本在运行。Deployment 是一个更高级的概念,它可以管理 ReplicaSet,并向 Pod 提供声明式的更新以及许多其它有用的功能。生产上,建议使用 Deployment 而不是直接使用 ReplicaSet 来部署应用,除非需要自定义更新业务流程或根本不需要更新。

示例,使用 nginx 镜像创建具有 3 个副本的 Deployment,并分配合适的属性。


deployment 管理了一个 RS,而 RS 又实现了 3 个 pod.

3.更新****Deployment

将 deployment 的镜像更改一次:

Deployment 并没有直接修改旧的 Pod,而是通过"新建新 RS -> 逐步起新 -> 逐步杀旧 -> 最终切换"的方式,保证了服务在升级过程中始终有可用的 Pod 在运行,从而实现了零停机更新。

发现更新过后多了一个 replicaset,新创建了三个 nginx 容器

4.回退Deployment

如果更新时将镜像名称写错,比如 nginx:1.161,而不是 nginx:1.16.1,就会导致永远无法更新成功,这个时候就需要进行回退操作。


查看历史更新版本:


查看历史更新版本 3 的详细信息:

回退到上一个正确版本 2:

5 .伸缩****Deployment

kubectl scale deployments/nginx-deployment --replicas=5

6.DaemonSet

DaemonSet 控制器能确保在全部(或者某些)节点上各运行一个 Pod 的副本。当有新节点加入集群时,也会为新节点启动一个 Pod,当有节点从集群移除时,这些 Pod 也会被回收。删除DaemonSet 将会删除它创建的所有 Pod。

DaemonSet 的一些典型用途:

  1. 在每个节点上运行集群守护进程。

  2. 在每个节点上运行日志收集守护进程。

  3. 在每个节点上运行监控守护进程。

使用 busybox 镜像,在每一个节点上都运行一个 Pod。

7.StatefulSet

StatefulSet 控制器用来管理基于相同容器规约的一组 Pod。但和 Deployment 不同的是,

StatefulSet 为它的每个 Pod 维护了一个有粘性的****ID。这些 Pod 是基于相同的规约来创建的,但是不能相互替换:无论怎么调度,每个 Pod 都有一个永久不变的 ID。

StatefulSets 非常适合于需要满足以下一个或多个需求的应用程序:

  1. 稳定的、唯一的网络标识符。

  2. 稳定的、持久的存储。

  3. 有序的、优雅的部署和缩放。

  4. 有序的、自动的滚动更新。

使用 nginx 镜像,创建一个副本数为 3 的有状态应用,并挂载本地目录到容器中。

8.Job与CronJob

9. Dockerfile

Dockerfile 其实就是制作容器镜像(比如你用的 nginx)的"自动化配方"或"施工蓝图"。

Kubernetes 负责调度和运行 Pod,而 Pod 里面跑的容器是从哪里来的呢?就是通过 Dockerfile 一行行指令构建出来的。它是一个纯文本文件,里面包含了一系列指令,告诉 Docker 引擎如何从零开始打包出一个包含你应用程序的镜像。

相关推荐
虎头金猫5 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
AI职业加油站5 天前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
此冬歌咏5 天前
K8s 节点故障实战:优雅驱逐 31 秒,硬故障 331 秒,以及那个永远 Pending 的 Pod
运维·k8s
-梅5 天前
linux(8) 软硬链接
linux·运维·服务器
赵文宇(温玉)5 天前
CoreDNS的hosts插件的缺行配置导致k8s集群异常
容器·kubernetes·rancher
guo_wen_qiang5 天前
上传本地镜像到harbor中
docker·容器·持续部署
张洛闻Eren5 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
其实防守也摸鱼5 天前
内网穿透与反向代理:原理、工具与实战指南
android·大数据·运维·安全·网络安全·自动化·渗透
布裘5 天前
【银河麒麟】V4桌面图标消失,右击鼠标没反应排查
运维·银河麒麟·桌面环境
懂软件的胡子个哥5 天前
微信机器人为什么需要“回复候选”而不是所有 AI 内容直接发送
运维·微信·自动化·wechatapi·个人微信号二次开发