一、创建(增加)命令
1、创建pod
-
kubectl apply -f pod.yml #创建和更新 kubectl create -f pod.yml #只创建,一般不更新的对象用
2、添加label
-
kubectl label pod pod-name key=value #给指定pod添加标签key,标签的值是value
3、创建namespace(ns)
-
kubectl create namespace ns-name kubectl create ns ns-name
二、删除命令
1、删除pod
-
kubectl delete -f pod.yml #删除pod kubectl delete pod pod-name #根据pod名称删除pod,因为可能会忘记使用哪个yaml文件创建的pod kubectl delete pod pod-name --force --grace-period=0 #强制删除指定pod kubectl delete pods -l key=value #使用标签选择器删除改标签值的所有pod kubectl delete namespace ns-name #删除指定命名空间中的所有pod
-
--grace-period表示过渡存活期,默认30s,在删除POD之前允许POD慢慢终止其上的容器进程,从而优雅退出,0表示立即终止POD
2、删除标签
-
kubectl label pod pod-name key- #根据标签的key删除该标签
3、删除namespace(ns)命名空间
-
kubectl delete ns ns-name #删除指定命名空间及该命名空间中的所有pod
三、修改命令
1、修改(更新)pod
-
kubectl apply -f pod.yml #创建和更新(修改了pod.yaml)
2、修改已有标签
-
kubectl label pod pod-name key=value2 --overwrite
-
--overwrite:覆盖/重写
四、查看(筛选)命令
1、查看node节点信息
-
kubectl get node
2、查看pod列表和运行状态等信息
-
kubectl get pod pod-name #查看某个pod kubectl get pods #查看所有pod信息 kubectl get pods -w #查看所有pod详细信息 kubectl get pods -Aw #动态查看所有pod详细状态信息 kubectl get pods -o wide #查看所有pod被调度到哪个worker上及pod的ip kubectl describe pod nginx-pod #查看某个pod详细信息(环境、ip、卷、事件等)
-
-A:查看所有
-
-w:watch,查看详细信息
-
-o:查看podIP地址和被调度到哪个worker上
-
-n default:默认的命名空间,省略
3、查看指定对象(pod、ns……)创建时的yaml文件
-
kubectl get pod pod-name -o yaml kubectl get ns ns-name -o yaml
4、查看pod标签及根据标签筛选pod
-
kubectl get pods --show-labels #查看所有pod的所有标签 kubectl get pod pod-name --show-labels #查看指定pod的所有标签 kubectl get pods --show-labels -l "env in (dev,qa,pro)" #筛选env标签在(dev,qa,pro)中的pod kubectl get pods --show-labels -l env=pro #筛选env标签是pro的所有pod kubectl get pods --show-labels -l env!=pro #筛选env标签不是pro的所有pod kubectl get pods --show-labels -l "run notin (nginx01,nginx02,nginx03)" #筛选run标签不在 (nginx01,nginx02,nginx03)中的所有pod kubectl get pods --show-labels -L env #筛选标签中有env标签的pod,并列出其env值 kubectl get pods --show-labels -l env #筛选标签中有env标签的pod
5、查看pod日志
-
kubectl logs pod-name #查看指定pod日志 kubectl logs -f pod-name #查看指定pod的实时日志 kubectl logs -f pod-name --since=10m #查看指定pod的10分钟内的日志
-
查看内存溢出报错日志,内存归 kubelet 管理
-
journalctl -u kubelet | grep -i memory grep kubelet /var/log/messages | grep -i memory
6、查看命名空间
-
kubectl get ns #查看已创建已存在的命名空间 kubectl get ns ns-name #查看指定的命名空间 kubectl describe ns ns-name #查看指定的命名空间的详细信息 kubectl get pods -n ns-name #查看指定的命名空间下的所有pod
五、cp和exec命令
1、cp复制,pod内和宿主机内互相复制
-
kubectl cp filename.txt pod-name:/path #宿主机文件复制到pod内 kubectl cp pod-name:/path/filename.txt /root #pod文件复制到宿主机内
2、exec和exec -it
-
kubectl exec -it pod-name -- sh #进入指定pod,注意 -- sh kubectl exec pod-name cmd #不进入pod执行命令cmd
六、临时运行一个pod,用于测试
-
kubectl run pod-name --image=image:tag
七、将 Pod 运行在指定的命名空间中
-
kubectl -n ns-name apply -f pod.yaml kubectl get pod nginx-self -n pa-pay kubectl get pod nginx-self -n pa-pay --show-labels
八、生成yaml模板文件
1、生成pod.yaml模板文件
-
kubectl run pod-name --image=image:tag --dry-run=client -o yaml
2、生成ns.yaml模板
-
kubectl create ns ns-name --dry-run=client -o yaml
九、Kubectl 命令补全
-
yum -y install bash-completion echo "source <(kubectl completion bash)" >> ~/.bashrc source ~/.bashrc bash