集群
kubectl get cs
kubectl cluster-info
kubectl get namespaces
kubectl version
kubectl api-versions
kubectl get events
kubectl get nodes //获取node节点
kubectl delete node k8s2 //删除节点
查看集群健康状态
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME STATUS MESSAGE ERROR
scheduler Healthy ok
controller-manager Healthy ok
etcd-1 Healthy {"health" :"true" }
etcd-4-events Healthy {"health" :"true" }
etcd-3-events Healthy {"health" :"true" }
etcd-5-events Healthy {"health" :"true" }
etcd-2 Healthy {"health" :"true" }
etcd-0 Healthy {"health" :"true" }
查看集群信息
Kubernetes control plane is running at https://10.21.15.213:5443
CoreDNS is running at https://10.21.15.213:5443/api/v1/namespaces/kube-system/services/coredns:dns/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'
命名空间
NAME STATUS AGE
default Active 21d
kube-node-lease Active 21d
kube-public Active 21d
kube-system Active 21d
版本
Client Version: version.Info{Major:"1" , Minor:"21" , GitVersion:"v1.21.5" , GitCommit:"aea7bbadd2fc0cd689de94a54e5b7b758869d691" , GitTreeState:"clean" , BuildDate:"2021-09-15T21:10:45Z" , GoVersion:"go1.16.8" , Compiler:"gc" , Platform:"linux/amd64" }
Server Version: version.Info{Major:"1" , Minor:"21+" , GitVersion:"v1.21.5-r0-CCE22.5.1" , GitCommit:"0a0877083e0c5aa13b74f80ca96d9fc90547e1e2" , GitTreeState:"clean" , BuildDate:"2022-09-01T15:22:01Z" , GoVersion:"go1.16.15" , Compiler:"gc" , Platform:"linux/amd64" }
API
admissionregistration.k8s.io/v1
admissionregistration.k8s.io/v1beta1
apiextensions.k8s.io/v1
apiextensions.k8s.io/v1beta1
apiregistration.k8s.io/v1
apiregistration.k8s.io/v1beta1
apps/v1
authentication.k8s.io/v1
authentication.k8s.io/v1beta1
authorization.k8s.io/v1
authorization.k8s.io/v1beta1
autoscaling.cce.io/v1alpha1
autoscaling.cce.io/v2alpha1
autoscaling/v1
autoscaling/v2beta1
autoscaling/v2beta2
batch/v1
batch/v1beta1
certificates.k8s.io/v1
certificates.k8s.io/v1beta1
config.k8s.io/v1beta1
coordination.k8s.io/v1
coordination.k8s.io/v1beta1
crd.yangtse.cni/v1
discovery.k8s.io/v1
discovery.k8s.io/v1beta1
events.k8s.io/v1
events.k8s.io/v1beta1
extensions/v1beta1
flowcontrol.apiserver.k8s.io/v1beta1
k8s.cni.cncf.io/v1
localvolume.everest.io/v1
metrics.k8s.io/v1beta1
networking.k8s.io/v1
networking.k8s.io/v1beta1
node.k8s.io/v1
node.k8s.io/v1beta1
policy/v1
policy/v1beta1
proxy.exporter.k8s.io/v1beta1
rbac.authorization.k8s.io/v1
rbac.authorization.k8s.io/v1beta1
rbac.cce.io/v1beta1
scheduling.k8s.io/v1
scheduling.k8s.io/v1beta1
snapshot.storage.k8s.io/v1beta1
storage.k8s.io/v1
storage.k8s.io/v1beta1
v1
version.cce.io/v1beta1
LAST SEEN TYPE REASON OBJECT MESSAGE
42m Normal Starting node/10.21.4.194 Starting kube-proxy.
41m Normal Starting node/10.21.4.194 Starting kubelet.
41m Normal NodeHasSufficientMemory node/10.21.4.194 Node 10.21.4.194 status is now: NodeHasSufficientMemory
41m Normal NodeHasNoDiskPressure node/10.21.4.194 Node 10.21.4.194 status is now: NodeHasNoDiskPressure
41m Normal NodeHasSufficientPID node/10.21.4.194 Node 10.21.4.194 status is now: NodeHasSufficientPID
41m Normal NodeAllocatableEnforced node/10.21.4.194 Updated Node Allocatable limit across pods
41m Normal Synced node/10.21.4.194 Node synced successfully
node节点
NAME STATUS ROLES AGE VERSION
10.21.4.194 Ready <none> 42m v1.21.5-r0-CCE22.5.1
kubectl delete node xxx //删除节点
查看
#终端不退出
kubect get pod - w
查看所有namespace的pods运行情况
kubectl get pods
查看具体pods,记得后边跟namespace名字哦
kubectl get pods kubernetes- dashboard-76479 d66bb- nj8wr
查看pods具体信息
kubectl get pods - o wide kubernetes- dashboard-76479 d66bb- nj8wr
查看deployment
kubectl get deployment
查看kube- system namespace下面的pod/ svc/ deployment 等等(- o wide 选项可以查看存在哪个对应的节点)
kubectl get pod / svc/ deployment - n kube- system
查看 namespace 中的所有 pod 包括未初始化的
kubectl get pods
查看deployment
kubectl get deployment nginx- app
查看rc和servers
kubectl get rc,services
查看pods结构信息(重点,通过这个看日志分析错误)
对控制器和服务,node同样有效
kubectl describe pods xxxxpodsname
其他控制器类似吧,就是kubectl get 控制器 控制器具体名称
查看pod日志
kubectl logs $POD_NAME
查看pod变量
kubectl exec my- nginx-5 j8ok
创建
创建
kubectl create -f ./nginx.yaml
kubectl apply -f xxx.yaml
kubectl create -f ./
kubectl create -f ./nginx1.yaml -f ./mysql2.yaml
kubectl create -f ./dir
kubectl create -f https://git.io/vPieo
kubectl run -i --tty busybox --image =busybox
kubectl run nginx --image =nginx
kubectl run mybusybox --image =busybox --replicas =5 ---- 启动多个pod
kubectl explain pods,svc
更新
kubectl rolling-update python-v1 -f python-v2 .json
kubectl rolling-update python-v1 python-v2 --image =image:v2
kubectl rolling-update python --image =image:v2
kubectl rolling-update python-v1 python-v2 --rollback
cat pod.json | kubectl replace -f -
kubectl expose rc nginx --port =80 --target-port =8000
更新单容器 pod 的镜像版本(tag)到 v4
kubectl get pod nginx-pod -o yaml | sed 's/(image: myimage):.*$/1:v4/' | kubectl replace -f -
kubectl label pods nginx-pod new-label =awesome
kubectl annotate pods nginx-pod icon-url =http://goo.gl/XXBTWq
kubectl autoscale deployment foo --min =2 --max =10
编辑资源
kubectl edit svc/docker-registry
KUBE_EDITOR="nano" kubectl edit svc/docker-registry
vim /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
kubectl set image deployment nginx-dp nginx=nginx:1.17
动态伸缩pod
kubectl scale --replicas=3 rs/foo
kubectl scale --replicas=3 -f foo.yaml
kubectl scale --current-replicas=2 --replicas=3 deployment/mysql
kubectl scale --replicas=5 rc/foo rc/bar rc/baz
kubectl rollout status deploy deployment/mysql
label 操作
kubectl label :添加label值 kubectl label nodes node1 zone=north
kubectl label pod redis-master-1033017107-q47hh role=master
kubectl label pod redis-master-1033017107-q47hh role-
kubectl label pod redis-master-1033017107-q47hh role=backend --overwrite
滚动升级
kubectl rolling- update :滚动升级 kubectl rolling- update redis- master - f redis- master- controller- v2.yaml #配置文件滚动升级
kubectl rolling- update redis- master
kubectl rolling- update redis- master
etcdctl常用操作
etcdctl cluster-health
etcdctl --endpoints=https://10.128.0.81:2379 cluster-health
etcdctl member list
etcdctl set /k8s/network/config ‘{ “Network”: “10.1.0.0/16” }’
etcdctl get /k8s/network/config
删除
kubectl delete pod -l app=flannel -n kube-system
kubectl delete -f ./pod.json
kubectl delete pod,service baz foo
kubectl delete pods,services -l name=myLabel
kubectl delete pods,services -l name=myLabel --include-uninitialized
kubectl -n my -ns delete po,svc --all
kubectl delete pods prometheus-7 fcfcb9f89-qkkf7 --grace-period=0 --force 强制删除
kubectl delete deployment kubernetes-dashboard --namespace=kube-system
kubectl delete svc kubernetes-dashboard --namespace=kube-system
kubectl delete -f kubernetes-dashboard.yaml
kubectl replace --force -f ./pod.json
交互
kubectl logs nginx-pod
kubectl logs nginx-pod -c my-container
kubectl logs -f nginx-pod
kubectl logs -f nginx-pod -c my-container
kubectl run -i --tty busybox --image=busybox -- sh
kubectl attach nginx-pod -i
kubectl port-forward nginx-pod 5000:6000
kubectl exec nginx-pod -- ls /
kubectl exec nginx-pod -c my-container -- ls /
kubectl top pod POD_NAME --containers
kubectl exec -ti podName /bin/bash
调度配置
kubectl cordon k8s-node
kubectl drain k8s-node
kubectl uncordon k8s-node
kubectl top node k8s-node
kubectl cluster-info dump
kubectl cluster-info dump --output-directory=/path/ to/cluster-state
如果该键和影响的污点(taint)已存在,则使用指定的值替换
kubectl taint nodes foo dedicated=special-user:NoSchedule
导出配置文件
导出proxy
kubectl get ds - n kube- system - l k8s- app= kube- proxy - o yaml> kube- proxy- ds.yaml
导出kube- dns
kubectl get deployment - n kube- system - l k8s- app= kube- dns - o yaml > kube- dns- dp.yaml
kubectl get services - n kube- system - l k8s- app= kube- dns - o yaml > kube- dns- services.yaml
导出所有 configmap
kubectl get configmap - n kube- system - o wide - o yaml > configmap.yaml
复杂操作
删除kube-system 下Evicted状态的所有pod:
kubectl get pods -n kube-system |grep Evicted| awk ‘{print $1}’|xargs kubectl delete pod -n kube-system
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?