kubernetes的Controller之deployment
【摘要】 kubernetes的Controller之deployment 使用yaml来创建应用 升级 总结 ❤️ 感谢大家 kubernetes的Controller之deploymentController是kubernetes集群中管理和运行容器的对象,pod通过Controller进行应用的操作,Controller与pod通过label标签来对应,Controller可以进行负载depl...
kubernetes的Controller之deployment
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类型。
❤️ 感谢大家
如果你觉得这篇内容对你挺有有帮助的话:
- 欢迎关注我❤️,点赞👍🏻,评论🤤,转发🙏
- 关注
盼盼小课堂
,定期为你推送好文,还有群聊不定期抽奖活动,可以畅所欲言,与大神们一起交流,一起学习。 - 有不当之处欢迎批评指正。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)