1、kubectl get

kubectl get pod -o wide -n iaoc  #指定命名空间
kubectl get deployment -n iaoc
kubectl get services
kubectl get all -A -o wide
kubectl get all -o wide -n kube-system  
kubectl get all -o wide -n ingress-nginx
kubectl get all -o wide -n iaoc
 

2、kubctl describe

kubectl describe deploy nginx-deployment -n iaoc
kubectl describe pod nginx-deployment-85d4c6c967-gpnh8 -n iaoc
kubectl describe svc nginx-svc -n iaoc
 

3、 查看pod日志(kubectl logs)

kubectl logs -f --tail 300 fileserverproxy-deployment-6458c65cbc-8mml9 -n iaoc

4、进入pod(kubectl exe)

kubectl exec  nginx-deployment-5d64ff9df6-l7hrc -n test -it -- /bin/bash

apt-get update && apt-get install iputils-ping   #安装ping命令

apt-get update && apt install dnsutils   #安装nslookup

apt-get update && apt install curl     #安装curl

apt-get update && apt install net-tools   #安装ifconfig

apt-get update && apt install telnet  #安装telnet

5、pod的拷贝(kubectl cp)

1)宿主机拷贝到pod

kubectl cp /usr/bin/telnet nginx-deployment-5d64ff9df6-l7hrc:/usr/bin/telnet -n iaoc

2)pod拷贝到宿主机

kubectl cp nginx-deployment-5d64ff9df6-l7hrc:/jstack.log  jstack.log    -n iaoc

6、kubectl get -o yaml(获取yaml配置)

kubectl get pod nginx-deployment-6458c65cbc-8mml9 -n iaoc -o yaml

kubectl get pod nginx-deployment -n iaoc -o yaml

kubectl get pod nginx-svc  -n iaoc -o yaml

7、删除Eviited状态的pod

kubectl get pods -A | grep Evicted | awk '{print $2}'|xargs kubectl delete pod -n cattle-system

常见于资源不足

8、rollout(回滚)

kubectl rollout history deployment nginx-deployment -n iaoc    #查看历史版本
 
kubectl rollout undo deployment nginx-deployment --to-revision=4 -n iaoc  #回滚到第四个版本
 
 

9、k8s对节点cordon,drain,delete

1)cordon

影响最小,只会将node调为**SchedulingDisabled**

之后再发创建pod,不会被调度到该节点

旧有的pod不会受到影响,仍正常对外提供服务

kubectl cordon node3(或IP)
 
恢复调度
 
kubectl uncordon node3 
 
#对pod进行驱逐后如果产生很多evicted(驱逐)状态的pod,一般只需要删除即可
kubectl -n iaoc  get pods | grep Evicted |awk '{print$1}'|xargs kubectl -n iaoc delete pods
 
2)drain
 
首先,驱逐node上的pod,其他节点重新创建

接着,将节点调为** SchedulingDisabled**
 
kubectl drain node4 --delete-local-data --ignore-daemonsets --force 
 
--force
当一些pod不是经 ReplicationController, ReplicaSet, Job, DaemonSet 或者 StatefulSet 管理的时候
就需要用--force来强制执行
 
--ignore-daemonsets
无视DaemonSet管理下的Pod
 
--delete-local-data
如果有mount local volumn的pod,会强制杀掉该pod并把数据清除掉
另外如果跟本身的配置讯息有冲突时,drain就不会执行
 
3)delete
 
首先,驱逐node上的pod,其他节点会重新创建

然后,从master节点删除该node,master对其不可见,失去对其控制,master不可对其恢复
 
kubectl delete node3
 
恢复调度,需进入node节点,重启kubelet

基于node的自注册功能,节点重新恢复使用
 
systemctl restart kubelet
 
 
 

10、标签

标签能够将pod主动调度到指定node,那么污点和容忍就是确保不将 pod 调度到不合适的 nodes

1)给节点打标签
 
kubectl label node node4  node_env=physical
kubectl label node node5  node_env=physical
kubectl label node node6  node_env=physical
 

或者直接编辑yaml文件

kubectl edit node node1 -o yaml

 
--overwrite 覆盖已有标签
 
2)查看标签
 
kubectl get node --show-labels  #查看节点标签
 
3)设置pod调度到指定节点(配置yaml)
 
template:
  ...
  spec:
    ...
    nodeSelector:          
      node_env: physical
 
template:
  ...
  spec:
    ...
     nodeSelector:           
       node_env: virtual
 
4)取消标签
 
kubectl label node node4  node_env-
 

11、污点和容忍

标签能够将pod主动调度到指定node,那么污点和容忍就是确保不将 pod 调度到不合适的 nodes

1)污点
 
kubectl describe node master1|grep Taints          #查看污点
 
 
kubectl taint nodes master1 node-type=production:NoSchedule     #设置污点
 
kubectl taint nodes master1 node-type=production:NoSchedule-
kubectl taint nodes master1 node-type=production:NoSchedule-      #取消污点
kubectl taint nodes master1 node-type:NoSchedule-      #取消所有键名是node-type的污点
 
NoSchedule: node添加这个effect类型污点,新的不能容忍的pod无法再调度过来,但是老的运行在node上不受影响
NoExecute:node添加这个effect类型污点,新的不能容忍的pod无法再调度过来,老的pod也会被驱逐
PreferNoSchedule:pod会更倾向于将pod分配到该节点
 
2)容忍
 
Pod对象的容忍度可以通过spec.tolerations字段进行添加,同一的也有两种操作符:Equal和Exists方式。Equal等值方式如下:
 
tolerations:
- key: "node-type"
  operator: "Equal"              #全部匹配,默认是Equal
  value: "production"
  effect: "Noexecute"
  tolerationSeconds: 3600
Exists方式如下:
tolerations:
- key: "key1"
  operator: "Exists"      #匹配key就可以,无需指定value
  effect: "NoExecute"
  tolerationSeconds: 3600   #只容忍3600s
 
 
注意两种特殊情况:
 
Key为空,operator为Exists表示匹配所有的key。如下例表示匹配所有taint:
tolerations:
- operator: "Exists"
 
空effect表示匹配所有effect,如:
tolerations:
- key: "key"
operator: "Exists"
 

11、重启deployment或daemonset

kubectl rollout restart daemonset calico-node  -n kube-system
kubectl rollout restart deployment calico-kube-controllers -n kube-system
 
 
 
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐