编辑
2023-11-23
🚀运维部署
00
请注意,本文编写于 574 天前,最后修改于 225 天前,其中某些信息可能已经过时。

目录

1.简介
2. 什么是controller?
3. Pod和Controller关系
4. Deployment控制器应用场景
5. yaml文件字段说明
6. Deployment控制器部署应用
1.无状态
2. 有状态
3. 部署有状态应用
4. 部署守护进程DaemonSet
7. 升级回滚
8. 弹性伸缩

1.简介

  • 确保预期的pod副本数量
  • 无状态应用部署
  • 有状态应用部署
  • 确保所有的node运行同一个pod
  • 一次性任务和定时任务

2. 什么是controller?

  • 在集群上管理和运行容器的对象

3. Pod和Controller关系

  • Pod是通过Controller实现应用的运维:比如 伸缩,滚动升级等等
  • Pod和Controller之间通过label标签建立关系(selector)

image.png

4. Deployment控制器应用场景

  • 部署无状态应用
  • 管理Pod和ReplicaSet
  • 部署,滚动升级等功能

比如说:web服务、微服务中

5. yaml文件字段说明

shell
kubectl create deployment web --image=nginx # 命令行方式只适合做测试 # 第一步导出yaml文件 kubectl create deployment web --image=nginx --run-dry -o yaml >web.yaml # 导出yaml的配置文件

通过label来进行操作

image.png

shell
# 查看yaml文件 vim web.yaml # 第二步:使用yaml文件部署应用 kubectl apply -f web.yaml kubectl get pods # 第三步:对外发布(暴露端口号) kubectl expose deployment web --port=80 --type=NodePort --target-port=80 --name=web1 -o yaml >web1.yaml # web1.yaml发布 kubectl apply -f web1.yaml

6. Deployment控制器部署应用

1.无状态

  • 认为Pod都是一样的
  • 没有顺序要求
  • 不用考虑在哪个node上运行
  • 随意进行伸缩和扩展

2. 有状态

  • 上面因素都需要考虑到
  • 让每个pod独立的,保持启动顺序和唯一性【通过唯一的网络标识符、持久化存储;有序(比如:mysql主从)】

3. 部署有状态应用

  • 无头service

    ClusterIP:none

image.png

  1. SatefulSet部署有状态应用

image.png

查看pod ,有三个pod,每个都是唯一的名称

image.png

查看创建无头的service

image.png

deployment和statefulset区别:有身份的(唯一标识的)

根据主机名+按照一定规则生产域名

  • 每一个pod有唯一主机名

  • 唯一域名:

    格式:主机名称.service名称.名称空间.svc.cluster.local 例如:nginx-statefulset-0.nginx.default.svc.cluster.local

4. 部署守护进程DaemonSet

7. 升级回滚

  1. 指定nginx的版本

image.png

shell
kubectl apply -f web.yaml kubectl get pods
  1. 镜像升级
shell
kubectl set image deployment web nginx=nginx:1.15

升级的过程: 1.14会创建一个副本,其中原来的不会停止,1.15在下载中

然后,1.15替换1.14 副本,同时删除1.14

image.png

shell
# 查看升级状态 kubect rollout status deployment web

image.png 3. 回滚版本

# 查看历史版本 kubectl rollout history deployment web

image.png

回滚到上一个版本

kubectl rollout undo deployment web

回滚到指定版本

kubectl rollout undo deployment web --to-revision=2

8. 弹性伸缩

添加更多的服务,添加更多的副本

kubectl scale deployment web --replicas=10

本文作者:Eric

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!