k8s常用命令
1、kubectl getkubectl get pod -o wide -n test #指定命名空间kubectl get deployment -n testkubectl get serviceskubectl get all -A -o widekubectl get all -o wide -n kube-systemkubectl get all -o wide -n ingress
1、kubectl get
kubectl get pod -o wide -n iaoc #指定命名空间kubectl get deployment -n iaockubectl get serviceskubectl get all -A -o widekubectl get all -o wide -n kube-systemkubectl get all -o wide -n ingress-nginxkubectl get all -o wide -n iaoc
2、kubctl describe
kubectl describe deploy nginx-deployment -n iaockubectl describe pod nginx-deployment-85d4c6c967-gpnh8 -n iaockubectl 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
接着,将节点调为** SchedulingDisabled**
kubectl drain node4 --delete-local-data --ignore-daemonsets --force
当一些pod不是经 ReplicationController, ReplicaSet, Job, DaemonSet 或者 StatefulSet 管理的时候
就需要用--force来强制执行
--ignore-daemonsets
无视DaemonSet管理下的Pod
--delete-local-data
如果有mount local volumn的pod,会强制杀掉该pod并把数据清除掉
另外如果跟本身的配置讯息有冲突时,drain就不会执行
然后,从master节点删除该node,master对其不可见,失去对其控制,master不可对其恢复
kubectl delete node3
基于node的自注册功能,节点重新恢复使用
systemctl restart kubelet
10、标签
标签能够将pod主动调度到指定node,那么污点和容忍就是确保不将 pod 调度到不合适的 nodes
kubectl label node node4 node_env=physicalkubectl label node node5 node_env=physicalkubectl label node node6 node_env=physical
或者直接编辑yaml文件
kubectl edit node node1 -o yaml
kubectl get node --show-labels #查看节点标签
template:...spec:...nodeSelector:node_env: physicaltemplate:...spec:...nodeSelector:node_env: virtual
kubectl label node node4 node_env-
11、污点和容忍
标签能够将pod主动调度到指定node,那么污点和容忍就是确保不将 pod 调度到不合适的 nodes
kubectl describe node master1|grep Taints #查看污点
kubectl taint nodes master1 node-type=production:NoSchedule #设置污点
NoExecute:node添加这个effect类型污点,新的不能容忍的pod无法再调度过来,老的pod也会被驱逐
PreferNoSchedule:pod会更倾向于将pod分配到该节点
tolerations:- key: "node-type"operator: "Equal" #全部匹配,默认是Equalvalue: "production"effect: "Noexecute"tolerationSeconds: 3600Exists方式如下:tolerations:- key: "key1"operator: "Exists" #匹配key就可以,无需指定valueeffect: "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-systemkubectl rollout restart deployment calico-kube-controllers -n kube-system
更多推荐
所有评论(0)