kubernetes 的 Controller
kubernetes 的 Controller
Controller 是 kubernetes 集群中管理和运行容器的对象,pod 通过 Controller 进行应用的操作,Controller 与 pod 通过 label 标签来对应,Controller 可以进行负载
deployment 是 pod 控制器的一种,部署无状态的应用,它用来管理 pod 和 replicaSet,它支持滚动升级等功能
使用 yaml 来创建应用
首先我们使用命令创建一个 yaml 文件
其中 web 表示应用的名字
这样我们就可以生成一个 Nginx 的 yaml 文件,然后可以基于这个文件做修改,使用这个文件的话使用命令
然后对外暴露端口:
其中 port 是内部端口,target-port 是对外暴露的端口
完成之后可以使用下面的命令查看服务的状态
我们刚才说它支持应用的升级、回滚和弹性伸缩
升级
使用命令
通过设置应用的版本号来让应用升级
升级的过程在应用容器创建完成后旧版本的应用才会暂停
查看升级状态
回滚上一版本命令:
也可以回滚到指定的版本,加入参数- -to revision=3
查看历史版本
deployment 可以保证支撑服务的 pod 数量,动态伸缩,弹性扩缩容,但是它没有解决如何进行服务访问的问,当新的节点以新的 ip 启动的时候,不能确定它的 ip 和端口,从而不能进行服务的发现和负载均衡,这就需要 service 对象了。service 就像个注册中心,通过 service 拿到提供的 ip 和 port,service 还可以进行负载均衡,pod 和 service 的关联是通过 label 和 selector 进行关联的。Service 三种常用的类型有 ClusterIp,NodePort 和 LoadBalancer,默认是 ClusterIp,LoadBalancer 可以在对外访问的时候。可以添加 yaml 文件中 type 字段的属性值更改 service 类型。
版权声明: 本文为 InfoQ 作者【周杰伦本人】的原创文章。
原文链接:【http://xie.infoq.cn/article/21eab04b3d58c7398475f2459】。文章转载请联系作者。
评论