1、pod管理
1.1创建pod
[root@master~]# kubectl run nginx-pod --port=80 --restart=Always --image=nginx:1.14-alpine
1.2查看pod
[root@master~]# kubectl get pod[root@master ~]# kubectl describe podnginx-pod #查看pod详细描述
1.3删除pod
[root@master ~]# kubectl delete ponginx-pod
通过自主式的创建pod的方式存在以下问题
1、pod一旦挂掉,就会影响业务
2、自主式pod只能创建单个,没有副本机制
3、即使创建多个pod,共同提供服务,也没有办法自动重建
所以我们要使用通过pod控制器去管理pod
2、控制器管理(deployment)
2.1通过控制器去创建pod
以deployment为例
[root@master ~]# kubectl create deploynginx-deploy --replicas=2 --port=80 --image=nginx:1.14-alpine
2.2查看deployment
[root@master ~]# kubectl get deploynginx-deployNAME READY UP-TO-DATE AVAILABLE AGEnginx-deploy 3/3 3 3 30m
3、伸缩控制
当业务需求量大的时候,需要扩容pod;当需求量小的时候需要去缩容pod
[root@master ~]# kubectl scale --replicas=5deploy nginx-deploy[root@master ~]# kubectl scale --replicas=3deploy nginx-deploy
4、滚动更新
在业务不中断的前提下去更新pod
[root@master ~]# kubectl describe deploynginx-deploy | grep Image #查看当前镜像Image: nginx:1.14-alpine[root@master ~]# kubectl set image deploynginx-deploy nginx=nginx:1.17-alpine[root@master ~]# kubectl rollout statusdeploy nginx-deploy #查看滚动更新状态Waiting for deployment"nginx-deploy" rollout to finish: 1 out of 3 new replicas have beenupdated.........deployment "nginx-deploy"successfully rolled out
使用发现有问题,需要去回滚
[root@master ~]# kubectl rollout undodeploy nginx-deploy #回退到上一个版本[root@master ~]# kubectl rollout undodeploy --to-revision=2 #回退到第二个版本[root@master ~]# kubectl describe deploynginx-deploy | grep Image #查看当前镜像Image: nginx:1.15-alpine[root@master ~]# kubectl rollout historydeploy nginx-deploy #查看历史版本
5、Service管理
需要最终把业务发布到互联网当中,就需要前端service,将pod进行代理
[root@master ~]# kubectl expose--name=nginx-svc --port=32222 --target-port=80 deploy nginx-deploy #service前端端口为32222 后端为80 默认使用ClusterIP[root@master ~]# kubectl get svc #查看serviceIP地址以及端口NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEkubernetes ClusterIP 10.96.0.1 <none 443/TCP 8hnginx-svc ClusterIP 10.107.131.111 <none 32222/TCP 3s[root@master ~]# curl10.107.131.111:32222 #集群内访问<!DOCTYPE html........</html
这种方式只能在集群中进行访问,无法将业务发布出去
通过edit修改pod类型,将业务发布出去
[root@master ~]# kubectl edit svcnginx-svc #修改service类型为NodePortapiVersion: v1kind: Servicespec:type: NodePort[root@master ~]# kubectl get svc #查看Seriver端口NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEkubernetes ClusterIP 10.96.0.1 <none 443/TCP 8hnginx-svc NodePort 10.107.131.111 <none 32222:30497/TCP 3m27s
访问资源

6、删除资源
[root@master ~]# kubectl delete deploynginx-deploydeployment.apps "nginx-deploy"deleted[root@master ~]# kubectl delete svcnginx-svcservice "nginx-svc" deleted
文章转载自运维实习生,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




