K8S-常用命令
简单介绍k8s的常用命令。例:查询,创建,修改,删除等等。
·
目录
1.查询命令
kubectl get pod --show-labels
#查询pod的标签
kubectl get pod -n defauct
#查看名称空间下的pod,-n指定名称空间
kubectl get pod -o wide
#查看pod的详细信息
kubectl describe deployments
#查看控制器的详细信息
kubectl get deployment,rs,pod
#查看多个对象的信息
kubectl get deployment nginx-deployment -o yaml
#将当前deployment的资源对象输出为yaml格式文件,kubectl get 控制器类型 控制器名 -o yaml
kubectl explain deployment.spec.selector
#查看标签匹配符。
kubectl rollout history deployment/nginx-deployment
#查看当前滚动更新的历史记录
kubectl log pod/hello-1664175300-4sq6q -c 容器名
#查看容器日志,若pod中只有一个容器,则无需加-c
kubectl get pod -A | grep -vE "1/1|2/2|3/3|4/4|5/5|Com"
#查看所有异常pod
kubectl describe pod -n namespace pod名
#查看异常pod的异常信息
2.创建命令
kubectl create -f aaa.yaml
#根据yaml文件创建pod
kubectl apply -f aaa.yaml
#声明式创建pod,可以进行滚动升级
#第一种create创建为命令式创建:
#虽然把文件改变了,但是文件已经存在,不会去检查内容,只是提醒文件已经存在。
#虽然内容发生了变化,但是也不会去应用。
#第二种apply创建为声明式创建:
#如果同一个对象,内部的数据不一致,目标不一致,期望不一致,会用到最新的期望。
kubectl create -f https://kubernetes.io/docs/user-guide/nginx-deployment.yaml --record
#--record参数可以记录命令,我们可以很方便的查看每次 revision 的变化
kubectl create svc clusterip nginx --tcp=80:80
#创建名为nginx的service环境,为用户提供访问入口,--tcp指定外部80端口与内部80端口的映射关系。
3.修改命令
kubectl scale rs rs-demo --replicas=3
#设置pod的副本数量为3个,kubectl scale 控制器类型 控制器名 --replicas=3
kubectl autoscale deployment nginx-deployment --min=10 --max=15 --cpu-percent=80
#如果集群支持 horizontal pod autoscaling 的话,还可以为Deployment设置自动扩展
kubectl label pod rs-demo-5fhp2 app=xinxianghf --overwrite
#修改pod标签名,kubectl label pod pod名 标签=标签名 --overwrite
kubectl set image deployment/nginx-deployment nginx=wangyanglinux/myapp:v2 --record
#设置镜像,deployment控制器的nginx-deployment对象,nginx容器=更改的镜像名
kubectl edit deployment/nginx-deployment
#在线编辑deployment,控制器类型/控制器名
kubectl cp my-namespace/my-pod:/etc/config/app.conf ./app.conf -c containers
#将pod中容器的文件复制出来
kubectl cordon <node-name>
#设置节点为不可调度状态
kubectl uncordon <node-name>
#设置节点为可调度状态
kubectl drain node01 --ignore-daemonsets --delete-local-data
#驱逐node01节点上的pod
#--ignore-daemonsets:忽略守护进程集(DaemonSet)管理的Pod,因为这些Pod是由DaemonSet自动创建的。
#--delete-local-data:这个选项会允许删除那些使用了本地存储的Pod(比如使用了emptyDir卷类型)。
4.删除命令
kubectl delete rs --all
#删除所有rs控制器创建的pod
kubectl delete svc nginx
#删除名为nginx的svc
kubectl delete pod deamonset-example-5mgpl
#delete删除pod pod名
kubectl delete pod deamonset-example-5mgpl –-force --grace-period=0
#强制删除
kubectl get pod -A | grep -vE "1/1|2/2|3/3|4/4|5/5|Com" | awk '{print "kubectl delete pod -n " $1 " " $2}' | bash
#异常状态的pod,全部删除
5.回滚命令
kubectl rollout history deployment/nginx-deployment
#查看当前滚动更新的历史记录
kubectl set image deployment/nginx-deployment nginx=wangyanglinux/myapp:v4
#升级到v4版
kubectl rollout undo deployment/nginx-deployment
#正在回滚
kubectl rollout status deployment/nginx-deployment
#查看rollout状态
6.滚动更新
kubectl set image deploy nginx-deployment nginx=wangyanglinux/myapp:v2
kubectl rollout pause deploy nginx-deployment
kubectl rollout status deployment/nginx-deployment
#先设置镜像到v2版,再立马暂停更新,再立马查看更新状态
kubectl rollout resume deploy nginx-deployment
#如果经过金丝雀探测更新后,没有产生问题,则使用这条命令恢复更新
7.去除污点
kubectl describe pod <podname> -n <namespaces>
#查看pod的pending的信息
#报错0/28 nodes are available: 1node(s) had taints that the pod didn't tolerate,27 node(s) didn't match node selector
kubectl describe node <异常节点nodename> | grep Taints
#查看异常污点信息
kubectl describe node <正常节点nodename> | grep Taints
#查看正常污点信息
kubectl taint nodes <异常节点nodename> node-role.kubernetes.io/master:NoSchedule-
#去除污点
kubectl taint nodes <异常节点nodename> node-role.kubernetes.io/master:NoSchedule
#添加污点
更多推荐
已为社区贡献6条内容
所有评论(0)