Skip to content

常用命令

1.查看目前部署的资源

kubectl get pods,service

2.启动

kubectl apply -f demo.yaml

3.升级

1.滚动升级
直接修改yaml文件中的镜像images版本
查看升级过程
Kubectl describe deploy.yaml web
2.免交互升级
kubectl set image deployment(指定创建资源的角色/类型 ) web(元数据名称) nginx=nginx:1.18

4.资源创建

# 通过文件创建一个Deployment
kubectl create -f /path/to/deployment.yaml
cat /path/to/deployment.yaml | kubectl create -f -
# 不过一般可能更常用下面的命令来创建资源
kubectl apply -f /path/to/deployment.yaml
# 通过kubectl命令直接创建
kubectl run nginx_app --image=nginx:1.9.1 --replicas=3 

5.资源查看

# 一般命令的格式会如下:
kubectl get <resource_type>
# 比如获取K8s集群下pod的信息
kubectl get pod
# 更加详细的信息
kubectl get pod -o wide
# 指定资源的信息,格式:kubectl get <resource_type>/<resource_name>,比如获取deployment nginx_app的信息
kubectl get deployment/nginx_app -o wide
# 也可以对指定的资源进行格式化输出,比如输出格式为json、yaml等
kubectl get deployment/nginx_app -o json
# 还可以对输出结果进行自定义,比如对pod只输出容器名称和镜像名称
kubectl get pod httpd-app-5bc589d9f7-rnhj7 -o custom-columns=CONTAINER:.spec.containers[0].name,IMAGE:.spec.containers[0].image
# 获取某个特定key的值还可以输入如下命令得到,此目录参照go template的用法,且命令结尾'\n'是为了输出结果换行
kubectl get pod httpd-app-5bc589d9f7-rnhj7 -o template --template='{{(index spec.containers 0).name}}{{"\n"}}'
# 还有一些可选项可以对结果进行过滤,这儿就不一一列举了,如有兴趣,可参照kubectl get --help说明

6.回滚

# 回滚之前先查看历史版本信息
kubectl rollout history deployment/nginx_app
# 回滚
kubectl rollout undo deployment/nginx_app
# 当然也可以指定版本号回滚至指定版本
kubectl rollout undo deployment/nginx_app --to-revision=<version_index>

7.总结

1.获取namespace信息
kubectl get namespace

2.查看版本
kubectl version

3.对node的操作
3.1查看node列表详细信息:

kubectl get node -o wide  --all-namespaces

kubectl get node -o wide | grep NotReady              #筛选NotReady节点

3.2查看某个node详细信息

kubectl describe node   + nodename

3.3 删除node

kubectl delete node + nodename

4.对pod的操作
4.1查看pod列表信息

kubectl get pods -o wide --all-namespaces     #查看所有pod;

kubectl get po -o wide | grep -v Running                   #筛选状态不是Running的pod

kubectl get po --all-namespaces | grep Evicted         #筛选被驱逐的pod

4.2查看某个pod的详细信息、日志

kubectl describe po <pod name>

kubectl logs -f  <pod name>  -n <namespace>

kubectl logs --tail=10  <pod name>  -n <namespace>    //打印行数(想从最新的开始打印就tail=1或者2或者3,都可以,反正是想要打印最新的实时日志)

kubectl -n middlewares logs mongo-mongodb-replicaset-0 -c bootstrap     //bootstrap    可以查启动的日志?

kubectl logs  majordomo-7b7dcc8c7d-pb9z8  -c majordomo --previous

4.3 进入某个pod的方法。

kubectl exec -it majordomo-6fbff7f5bb-mqhwg  -c majordomo /bin/bash   //majordomo 

nc -zvw1 security-pass-fb-nonmotor-motor-hd-mid-0.security-pass-fb-nonmotor-motor-hd-mid-svc  29000   //在pod中查询网络外部pod的网络连接

4.4 删除pod,删除的pod会自动拉起。

kubectl delete pod <pod-name> -n <namespace>

5.对k8s相关配置项的操作
kubectl get cm --all-namespaces   #查看所有配置项列表

kubectl get cm -n <namespaces> < xx-xx-cfg> -oyaml   #查看某个配置项详情

kubectl edit cm -n <namespaces> < xx-xx-cfg>   #编辑某个配置项的内容,修改后需要重启pod

6.查看应用
kubectl get deployment --all-namespaces    #查看部署的应用;

kubectl get deployment --namespace=kube-system kong -o yaml

kubectl delete deployment --namespace=kube-system kong         #删除指定的应用;

7.查看服务
kubectl get services --all-namespaces

kubectl get service  <serviceName>

kubectl get rc,service #查看rc、service对象

kubectl get endpoints

kubectl get endpoints --all-namespaces

kubectl describe service <serviceName> --namespace=d07a12d56-fe42-4b27-a18

8.按照yaml或json格式查看pod信息,包含k8s的manage的pod的镜像的版本号:
kubectl get pod podname --namespace=spacesname -o yaml

9.查看replicaset:
kubectl get replicaset   #replicaset是用来管理实例数量的,可以看成是rc/deployment的一个对象。