k8s学习五-核心技术~Controller

controller是在集群上管理和运行容器的对象,pod通过controller来实现应用的运维比如伸缩,滚动升级等。pod和controller之间通过label标签建立联系。

1 deployment控制器

1.1 应用场景

  • 部署无状态应用,如web服务、微服务
  • 管理Pod和ReplicaSet
  • 部署、滚动升级等功能

1.2 部署应用

1 导出yaml文件

kubectl create deployment web --image=nginx --dry-run -o yaml > web.yaml

2 使用yaml部署应用

kubectl apply -f web.yaml

3 对外暴露服务

kubectl expose deployment web --port=80 --type=NodePort --target-port=80 – name=web1 -o yaml > web.yaml

4 部署应用

kubectl apply -f web1.yaml

1.3 升级回滚和弹性伸缩

  • 镜像升级

镜像升级中一个个升级,首先下载目标版本镜像,下载过程中老服务仍然提供服务。下载后做替换,优雅升级
1 当前镜像版本
在这里插入图片描述
2 镜像升级:

kubectl set image deployment web nginx=nginx:1.15
在这里插入图片描述

3 查看升级状态:

kubectl rollout status deployment web
在这里插入图片描述

  • 镜像回滚

1 查看升级记录

kubectl rollout history depolyment web
在这里插入图片描述

2 回退到上个版本

kubectl rollout undo depolyment web
在这里插入图片描述

3 回滚到指定版本

kubectl rollout undo depolyment web --to-revision=2
在这里插入图片描述

  • 弹性伸缩

kubectl scale deployment web --replicas=10
在这里插入图片描述

2 StatefulSet控制器

通过deployment控制器部署无状态应用。如果想部署有状态应用需要使用StatefulSet控制器

2.1 无状态和有状态

无状态概念:

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

有状态概念:

  • 上述因素都要考虑到
  • 每个pod都是独立的,保持pod的启动顺序(如mysql主从结构,先启动主再启动从)和唯一性(通过唯一的网络标识符进行区分)

2.2 部署应用

2.2.1 修改yaml文件

  • 首先定义一个无头Service
    在这里插入图片描述
  • 配置有状态应用
    在这里插入图片描述

2.2.2 启动应用

在这里插入图片描述
可以看到pod名称和配置是一致的
查看创建的无头service
在这里插入图片描述

2.2.3 唯一标识

每个pod都会生成一个唯一域名,生成规则如下
在这里插入图片描述

3 DaemonSet控制器

DaemonSet确保集群中每个(部分)node运行一份pod副本,当node加入集群时创建pod,当node离开集群时回收pod。如果删除DaemonSet,其创建的所有pod也被删除,DaemonSet中的pod覆盖整个集群。
当需要在集群内每个node运行同一个pod,使用DaemonSet是有价值的,以下是典型使用场景:

  • 运行集群存储守护进程,如glusterd、ceph。
  • 运行集群日志收集守护进程,如fluentd、logstash。
  • 运行节点监控守护进程,如Prometheus Node Exporte

3.1 使用示例

这里做一个nginx日志采集功能,把日志写到特定目录
在这里插入图片描述
测试效果
在这里插入图片描述

4 部署任务

4.1 一次性任务

1 编写yaml文件
在这里插入图片描述
backoffLimit:失败之后再尝试4次
2 创建并查看pod
在这里插入图片描述
3 查看job
在这里插入图片描述
因为是一次性任务,运行完成后变成Completed状态
4 查看日志
在这里插入图片描述

4.2 定时任务

1 编写yaml文件
在这里插入图片描述
定时输出时间和hello
2 创建并查看容器
在这里插入图片描述
3 查看任务
在这里插入图片描述
4 查看日志
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值