三、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