点击蓝字 关注我们
前言
继续学习记录k8s,今天主要记录controller和service.
正文
controller是在集群上管理和运行容器的对象。
Pod是通过Controller实现应用的运维,比如伸缩,滚动升级等等。Pod和Controller之间通过label标签建立关系.deployment应用场景:部署无状态应用、管理Pod和ReplicaSet。应用场景:web服务,微服务。
kubectl expose deployment web --port=80--type=NodePort --target-port=80 --name=web1 -o yaml >web1.yaml
应用升级
kubectl set image deployment web nginx=nginx:1.15
查看升级状态
kubectl rollout status deployment web
还原回上一个状态
kubectl rollout undo deployment web
查看升级版本
kubectl rollout history deployment web
回滚到指定的版本
kubectl rollout undo deployment wen --to-version=2
弹性伸缩
kubectl scale deployment web --replicas=10
无状态和有状态
无状态:
认为Pod都是一样的
没有顺序要求
不用考虑在哪个node运行
随意进行伸缩和扩展
有状态:
让每个pod独立的,保持pod启动顺序和唯一性
唯一的网络标识符,持久存储
有序,比如mysql主从
deployment和statefuset区别:有身份的(唯一标识的)
根据主机名+按照一定规则生成域名
部署守护进程DaemonSet
在每个node上运行一个pod,新加入的node也同样运行在一个pod里面.
确保每个node运行同一个pod
kubectl exec -it ds-test-cr7vl bash
负责批处理任务
Job创建一个或多个Pod,并确保指定数量的Pod成功终止。Pod成功完成后,Job将跟踪成功完成的情况。当达到指定的成功完成次数时,任务(即Job)就完成了。删除Job将清除其创建的Pod。
计划任务表达式的特殊字符"*“与”/"的含义如下:
*:表示匹配该域的任意值,假如在Minutes域使用*则表示每分钟都会触发事件。
/:表示起始时间开始触发,然后每隔固定时间触发一次,例如在Minutes域设置为5/20,则意味着第1次出发在第5min时接下来每20min触发一次,将在第25min、第45min等时刻分别触发。
比如每隔1min执行一次任务,则Cron表达式如下:*/1 * * * *
Service是一种抽象的对象,它定义了一组Pod的逻辑集合和一个用于访问它们的策略,一个Serivce下面包含的Pod集合一般是由Label Selector来决定的。
防止Pod失联(服务发现),找到你具体功能的ip
根据label关联
常见service类型
1、CluseterIP:集群内部使用
2、NodePort: 对外访问应用
3、LoadBalancer:对外访问应用使用,公有云(负载均衡,控制器)
这里给大家推荐一下本人自己创建的知识星球,因为深知我一个人带给不了大家太多,所以拉了很多大佬,可以帮助大家解答疑惑,分享知识,在工作上也可以帮大家内推,各大安全厂商以及BAT级的都可以。
这里再推荐一个云计算相关的知识分享群,群主是浙大博二,著作有《深入理解边缘计算》
原文始发于微信公众号(Th0r安全):云原生安全入门之Controller与Service
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论