k8s

三、Kubernetes快速入门

2021-11-15  本文已影响0人  jan29

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 pod nginx-pod  #查看pod详细描述

1.3删除pod

[root@master ~]# kubectl delete po nginx-pod

通过自主式的创建pod的方式存在以下问题
1、pod一旦挂掉,就会影响业务
2、自主式pod只能创建单个,没有副本机制
3、即使创建多个pod,共同提供服务,也没有办法自动重建

所以我们要使用通过pod控制器去管理pod

2、控制器管理(deployment)

2.1通过控制器去创建pod

以deployment为例

[root@master ~]# kubectl create deploy nginx-deploy --replicas=2 --port=80  --image=nginx:1.14-alpine

2.2查看deployment

[root@master ~]# kubectl get deploy nginx-deploy
NAME           READY   UP-TO-DATE   AVAILABLE   AGE
nginx-deploy   3/3     3            3           30m

3、伸缩控制

当业务需求量大的时候,需要扩容pod;当需求量小的时候需要去缩容pod

[root@master ~]# kubectl scale --replicas=5 deploy nginx-deploy
[root@master ~]# kubectl scale --replicas=3 deploy nginx-deploy

4、滚动更新

在业务不中断的前提下去更新pod

[root@master ~]# kubectl describe deploy nginx-deploy | grep Image  #查看当前镜像
    Image:        nginx:1.14-alpine  
[root@master ~]# kubectl set image deploy nginx-deploy nginx=nginx:1.17-alpine  
[root@master ~]# kubectl rollout status deploy nginx-deploy  #查看滚动更新状态
Waiting for deployment "nginx-deploy" rollout to finish: 1 out of 3 new replicas have been updated...
......
deployment "nginx-deploy" successfully rolled out

使用发现有问题,需要去回滚

[root@master ~]# kubectl rollout undo deploy nginx-deploy   #回退到上一个版本
[root@master ~]# kubectl rollout undo deploy --to-revision=2  #回退到第二个版本
[root@master ~]# kubectl describe deploy nginx-deploy | grep Image  #查看当前镜像
    Image:        nginx:1.15-alpine
[root@master ~]# kubectl rollout history deploy 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)     AGE
kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP     8h
nginx-svc    ClusterIP   10.107.131.111   <none>        32222/TCP   3s
[root@master ~]# curl 10.107.131.111:32222  #集群内访问
<!DOCTYPE html>
........
</html>

这种方式只能在集群中进行访问,无法将业务发布出去
通过edit修改pod类型,将业务发布出去

[root@master ~]# kubectl edit svc nginx-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

访问资源


image.png

6、删除资源

[root@master ~]# kubectl delete deploy nginx-deploy
deployment.apps "nginx-deploy" deleted
[root@master ~]# kubectl delete svc nginx-svc
service "nginx-svc" deleted
上一篇下一篇

猜你喜欢

热点阅读