查看
-
查看所有kubelet節點
kubectl get nodes
kubectl get nodes -o wide --show-labels //可以看到所有節點的label -
查看所有pod
kubectl get pods --all-namespaces
kubectl get pods -o wide
kubectl get pods -o wide -w //可以看到實時狀態變化 -
查看pod詳情
kubectl describe pod podname -n namespace
kubectl get -o json pod podname -n namespace
kubectl get pods/podname -n namespace
kubectl get pods/podname -n namespace -o json -
查看所有daemonset
kubectl get daemonset --all-namespaces -
kubectl get rc,services
-
List one or more resources by their type and names.
kubectl get rc/web service/frontend pods/web-pod-13je7
namespace相關
- 要使用新的namespace,必須先創建,然后才能寫在yaml的metadata的字段里
kubectl create namespace newname
節點的label
- 查看節點的所有label
kubectl get node --show-labels - 給節點添加一個新label
kubectl label nodes kube-node node=kube-node - 修改節點的label
kubectl label nodes --overwrite k8s-slave node-network-driver=ovs - 刪除節點的某個label
kubectl label nodes kube-node node-
yaml文件、配置相關
-
查看資源的yaml
kubectl get deploy/my-nginx --export -o yaml
kubectl get deploy/my-nginx --export -o yaml > example.yaml -
生成yaml文件
由於yaml文件格式不好記住,可以先通過kubectl命令生成yaml,再更改yaml。 –dry-run表示嘗試,不真實執行。
kubectl run --image=nginx my-nginx -o yaml --dry-run >> xxx.yaml -
修改API 資源的屬性
kubectl edit pod/testnew2-prd-123 -n testnew2//Update a container's image; spec.containers[*].name is required because it's a merge key.
kubectl patch pod valid-pod -p '{"spec":{"containers":[{"name":"kubernetes-serve-hostname","image":"new image"}]}}'//Update a single-container pod's image version (tag) to v4
kubectl get pod mypod -o yaml | sed 's/(image: myimage):.*$/\1:v4/' | kubectl replace -f -
對容器執行命令
-
對單容器的pod執行命令,注意--后面必須有空格
kubectl exec -it pod_name -n namespace -- ovs-vsctl show有的時候一個pod中有多個容器,只有針對整個pod的命令才有效,此時需要指定container,這里指定的是container-name(可以用kubectl describe pod查看所有的容器名稱)
kubectl exec -it podname -n namespace -c containername -- ovs-vsctl show -
文件拷貝
kubectl cp pod-name:/path/to/file /tmp/localpath/file - 修改容器的鏡像,如下是修改daemonset contiv-netplugin-ovs contiv-netplugin的鏡像為新鏡像,首先要先docker pull新鏡像
- kubectl set image ds/contiv-netplugin-ovs contiv-netplugin=new-image -n kube-system
然后需要刪除需要更新的daemonset中的pod,然后會重建pod,這個pod使用的就是新鏡像. 這里的標簽是container-name=new-image-name
- kubectl set image ds/contiv-netplugin-ovs contiv-netplugin=new-image -n kube-system
- 動態調整副本數
- kubectl scale deployment.v1.apps/apitest-deployment --replicas=10 -n namespace
常見問題
-
計算節點狀態為 Ready,SchedulingDisabled, 執行 kubectl uncordon node-name即可。
-
根據node的label篩選節點
kubectl label nodes kube-node node=kube-node
kubectl label nodes --overwrite k8s-slave node-network-driver=sriov //修改節點k8s-slave的標簽node-network-driver的值為sriov
kubectl get node -a -l "node=kube-node"
pod或者rc的配置項中添加如下配置,位置跟cotainer平行:
nodeSelector:
node: kube-node4