写点什么

kubernetes 的 Controller

作者:周杰伦本人
  • 2022-10-17
    贵州
  • 本文字数:821 字

    阅读完需:约 1 分钟

kubernetes 的 Controller


Controller 是 kubernetes 集群中管理和运行容器的对象,pod 通过 Controller 进行应用的操作,Controller 与 pod 通过 label 标签来对应,Controller 可以进行负载


deployment 是 pod 控制器的一种,部署无状态的应用,它用来管理 pod 和 replicaSet,它支持滚动升级等功能

使用 yaml 来创建应用

首先我们使用命令创建一个 yaml 文件


kubectl create deployment web --image=nginx --dry-run -o yaml > nginx.yaml
复制代码


其中 web 表示应用的名字


这样我们就可以生成一个 Nginx 的 yaml 文件,然后可以基于这个文件做修改,使用这个文件的话使用命令


kubectl apply -f nginx.yaml
复制代码


然后对外暴露端口:


kubectl expose deployment web --port=80 --type=NodePort --target-port=80 --name=web1 -o yaml > web1.yaml
复制代码


其中 port 是内部端口,target-port 是对外暴露的端口


完成之后可以使用下面的命令查看服务的状态


kubectl get pods,svc
复制代码


我们刚才说它支持应用的升级、回滚和弹性伸缩

升级

使用命令


kubectl set image deployment web nginx=nginx:1.16
复制代码


通过设置应用的版本号来让应用升级


升级的过程在应用容器创建完成后旧版本的应用才会暂停


查看升级状态


kubectl rollout status deployment webname
复制代码


回滚上一版本命令:


kubectl rollout undo deployment web
复制代码


也可以回滚到指定的版本,加入参数- -to revision=3


查看历史版本


kubectl rollout history deployment web
复制代码


deployment 可以保证支撑服务的 pod 数量,动态伸缩,弹性扩缩容,但是它没有解决如何进行服务访问的问,当新的节点以新的 ip 启动的时候,不能确定它的 ip 和端口,从而不能进行服务的发现和负载均衡,这就需要 service 对象了。service 就像个注册中心,通过 service 拿到提供的 ip 和 port,service 还可以进行负载均衡,pod 和 service 的关联是通过 label 和 selector 进行关联的。Service 三种常用的类型有 ClusterIp,NodePort 和 LoadBalancer,默认是 ClusterIp,LoadBalancer 可以在对外访问的时候。可以添加 yaml 文件中 type 字段的属性值更改 service 类型。

发布于: 刚刚阅读数: 5
用户头像

还未添加个人签名 2020-02-29 加入

公众号《盼盼小课堂》,多平台优质博主

评论

发布
暂无评论
kubernetes的Controller_10月月更_周杰伦本人_InfoQ写作社区