【K8s】K8s控制器——复制集和deployment

高效、可靠地管理多个相同的容器应用,实现应用的自动扩缩容、故障恢复和版本升级

1、复制集

如果某个 Pod 挂了(比如容器崩溃、节点宕机),ReplicaSet 会​​自动创建一个新的 Pod 替补​​,始终确保 Pod 数量 = 你定义的 replicas 值。

2、deployment

  • 通过管理 ReplicaSet 来间接控制 Pod​​(你一般不直接操作 ReplicaSet,而是通过 Deployment 来操作);

  • ​支持滚动更新(平滑升级镜像版本,不停机)​

  • ​支持回滚(升级失败时快速回到旧版本)​

  • ​支持扩缩容(一键调整 Pod 数量)​

  • ​支持版本历史记录(查看每次变更,方便审计和回退)​

#- 8.1 # 创建复制集

定义yaml文件,这是一种声明式编程

bash 复制代码
cat > rs.yml <<EOF
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: nginxrstest
  labels:
    app: nginxrstest
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginxrstest
  template:
    metadata:
      labels:
        app: nginxrstest
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
          - name: http
            containerPort: 80
        imagePullPolicy: IfNotPresent
EOF

创建复制集

bash 复制代码
kubectl create -f rs.yml 

查看复制集

bash 复制代码
kubectl get replicasets.apps,pods -o wide

删除复制集

bash 复制代码
kubectl delete replicasets nginxrstest

#- 8.2 #创建deployment

cat > deployment.yml <<EOF

apiVersion: apps/v1

kind: Deployment

metadata:

name: nginx-deployment

labels:

app: nginx

spec:

replicas: 3

selector:

matchLabels:

app: nginx

template:

metadata:

labels:

app: nginx

spec:

containers:

  • name: nginx

image: nginx

imagePullPolicy: IfNotPresent

ports:

  • containerPort: 80

EOF

kubectl create -f deployment.yml

kubectl get deployments.apps,replicasets.apps,pods -l app=nginx

#- 8.3 # 升级

kubectl set image deployments/nginx-deployment nginx=nginx:1.16.1 --record

kubectl rollout status deployment/nginx-deployment

kubectl get deployments.apps,replicasets.apps,pods -l app=nginx

#- 8.4 # 回滚

kubectl set image deployments/nginx-deployment nginx=nginx:1.161 --record

kubectl rollout status deployment/nginx-deployment

kubectl rollout history deployments/nginx-deployment

kubectl rollout history deployment.v1.apps/nginx-deployment --revision=3

kubectl rollout undo deployments/nginx-deployment --to-revision=2

kubectl rollout status deployment/nginx-deployment

kubectl get deployments.apps,replicasets.apps,pods -l app=nginx

#- 8.5 # 扩容

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

kubectl get deployments.apps,replicasets.apps,pods -l app=nginx

kubectl delete deployments.apps nginx-deployment

kubectl get deployments.apps,replicasets.apps,pods -l app=nginx

相关推荐
yBmZlQzJ6 分钟前
免费内网穿透-端口转发配置介绍
运维·经验分享·docker·容器·1024程序员节
JH30737 分钟前
docker 新手入门:10分钟搞定基础使用
运维·docker·容器
阿里云云原生14 分钟前
Android App 崩溃排查实战:如何利用 RUM 完整数据与符号化技术定位问题?
android·阿里云·云原生·rum
wuxia211826 分钟前
minikube的安装
kubernetes·云计算
天河归来1 小时前
在本地windows电脑使用Docker搭建xinference环境
docker·语言模型·容器
算力魔方AIPC2 小时前
使用 Docker 一键部署 PaddleOCR-VL: 新手保姆级教程
运维·docker·容器
熊出没2 小时前
Kubernetes 实操命令大全
云原生·容器·kubernetes
阿里云云原生2 小时前
深度解析云监控 2.0 日志审计:统一采集、实体建模与告警溯源能力
阿里云·云原生·云监控·可观测
Ghost Face...3 小时前
Docker实战:从安装到多容器编排指南
运维·docker·容器
闲人编程4 小时前
健康检查与就绪探针
kubernetes·web·状态机·健康检查·codecapsule·存活探针·启动探针