kubectl命令管理
kubectl是管理k8s群集的命令工具,通过生成的json格式传递给apiserver进行创建、查看、管理等操作
命令帮助
查看帮助信息,使用–help可以让我们了解
[root@master ~]# kubectl --help
命令之项目生命周期
我们从一个项目的生命周期:创建–发布–更新–回滚–删除的过程来更加了解kubectl命令
创建资源
使用kebectl run
[root@master ~]# kubectl run nginx --image=nginx:latest --port=80 --replicas=3
可以查看一下
使用-w可查看创建过程
由于敲命令时需要时间的所有会缺少一些过程
[root@master ~]# kubectl get pods -w
查看创建好的pod
[root@master ~]# kubectl get pods
查看pod,deployment,和service,replicas
[root@master ~]# kubectl get all
[root@master demo]# kubectl get all
NAME READY STATUS RESTARTS AGE
pod/nginx-deployment-d55b94fd-9qmjl 1/1 Running 0 35m
pod/nginx-deployment-d55b94fd-fnpwk 1/1 Running 0 35m
pod/nginx-deployment-d55b94fd-v5wmj 1/1 Running 0 35m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 12d
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
deployment.apps/nginx-deployment 3 3 3 3 35m
NAME DESIRED CURRENT READY AGE
replicaset.apps/nginx-deployment-d55b94fd 3 3 3 35m
这里需要说明的是一个pod会有一个deployment和一个replicaset支持,deployment支持业务更新,replicaset用于维持副本数量
service其实是业务发布部分,这里的service是系统中的,还不是我们刚刚创建的pod的发布,在发布的步骤中会生成新的service
发布资源
在k8s中关于端口有四种
- port
是k8s群集内部访问service的端口,即通过clusterip:port可以访问到某个service - nodeport
是外部访问k8s群集中的service的端口,即通过nodeip:nodeport可以从外部访问到k8s群集的service - targetport
是pod的端口,从port和nodeport来的流量经过kube-proxy流入到后端pod的targetport上,最后进入容器 - containerport
是pod内容器的端口,targetport映射到containerport
发布资源相当于端口映射的过程
[root@master ~]# kubectl expose deployment nginx --port=80 --target-port=80 --name=nginx-service --type=NodePort
service/nginx-service exposed
[root@master ~]# kubectl get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 11d
nginx-service NodePort 10.0.0.85 <none> 80:34242/TCP 13s
查看关联后端的节点
[root@master ~]# kubectl get endpoints
NAME ENDPOINTS AGE
kubernetes 20.0.0.10:6443,20.0.0.20:6443 11d
nginx-service 172.17.3.3:80,172.17.47.3:80,172.17.47.4:80 3m22s
查看网络状态详细信息
[root@master ~]# kubectl get pods,svc -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE
pod/nginx-7697996758-qzzjr 1/1 Running 0 11m 172.17.3.3 20.0.0.30 <none>
pod/nginx-7697996758-w2spn 1/1 Running 0 11m 172.17.47.4 20.0.0.40 <none>
pod/nginx-7697996758-xn66n 1/1 Running 0 11m 172.17.47.3 20.0.0.40 <none>
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
service/kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 11d <none>
service/nginx-service NodePort 10.0.0.85 <none> 80:34242/TCP 6m42s run=nginx
此时访问node节点ip和映射的34242的端口,即可访问nginx的服务