暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

三、Kubernetes快速入门

运维实习生 2021-11-15
406

1pod管理

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的方式存在以下问题

1pod一旦挂掉,就会影响业务

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-deploy
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-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 #查看历史版本

5Service管理

需要最终把业务发布到互联网当中,就需要前端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) AGE
kubernetes ClusterIP 10.96.0.1 <none 443/TCP 8h
nginx-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类型为NodePort
apiVersion: v1
kind: Service
spec:
type: NodePort
[root@master ~]# kubectl get svc #查看Seriver端口
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none 443/TCP 8h
nginx-svc NodePort 10.107.131.111 <none 32222:30497/TCP 3m27s

访问资源

6、删除资源

[root@master ~]# kubectl delete deploynginx-deploy
deployment.apps "nginx-deploy"deleted
[root@master ~]# kubectl delete svcnginx-svc
service "nginx-svc" deleted

 


文章转载自运维实习生,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论