k8s常用kubectl命令
pod 相关
强制删除pod
kubectl delete pod <pod_name> --grace-period=0 --force
kubectl delete pod test --grace-period=0 --force
查看 Pod 中指定容器的日志
kubectl logs <pod_name> -c <container_name>
kubectl logs my-pod -c my-container
kubectl logs -p <pod_name> -c <container_name>
kubectl logs -p my-pod -c my-container
pod 扩容
kubectl scale deployment <deployment_name> --replicas=<desired_replica_count>
kubectl scale deployment my-deployment --replicas=3
kubectl get deployment
kubectl scale statefulset <statefulset_name> --replicas=<desired_replica_count>
kubectl scale statefulset my-statefulset --replicas=5
kubectl get statefulset
kubectl scale replicasets <replicaset_name> --replicas=<desired_replica_count>
kubectl scale replicasets my-replicaset --replicas=4
kubectl get replicasets
kubectl autoscale deployment my-deployment --cpu-percent=70 --min=1 --max=10
kubectl get hpa
etcd 备份
etcdctl --endpoints=<etcd-endpoint> snapshot save <backup-file-name>
etcdctl --endpoints=http://localhost:2379 snapshot save /path/to/backup.db
etcdctl --endpoints=<etcd-endpoint> --cacert=/path/to/ca.crt --cert=/path/to/client.crt --key=/path/to/client.key snapshot save <backup-file-name>
etcdctl snapshot restore <backup-file-name> --data-dir /var/lib/etcd-from-backup
集群
设置集群上下文配置文件
设置 Kubernetes 配置文件(kubeconfig)中的上下文信息
kubectl config set-context CONTEXT_NAME --cluster=CLUSTER_NAME --user=USER_NAME --namespace=NAMESPACE_NAME
#具体参数的含义如下:
#CONTEXT_NAME:要设置的上下文的名称。
#--cluster=CLUSTER_NAME:关联的集群名称。
#--user=USER_NAME:关联的用户名称。
#--namespace=NAMESPACE_NAME:关联的命名空间。
kubectl config set-context my-context --cluster=my-cluster --user=my-user --namespace=my-namespace
kubectl config use-context my-context
切换集群
kubectl config get-contexts
kubectl config use-context <context-name>
kubectl config use-context my-cluster-context
kubectl config current-context
节点
- cordon 主要用于禁用调度,不会影响已经运行的 Pod。
- drain 则用于节点的优雅退役,它会逐个驱逐节点上的 Pod,并尝试在其他节点上重新调度。
cordon
- kubectl cordon 用于禁用节点的调度禁用节点的调度,防止新的 Pod 被调度到该节点上。这不会影响已经运行在节点上的 Pod。这个命令可以用于临时地排除一个节点,以进行维护或故障排除,而不中断正在运行的工作负载。
kubectl cordon <node_name>
drain
- kubectl drain 用于执行一个节点的优雅退役。它首先使用 cordon 将节点标记为不可调度,然后它会逐个驱逐节点上的 Pod。在驱逐 Pod 之前,它会尝试在其他节点上重新调度这些 Pod。这个命令常用于需要从节点上删除所有工作负载,以进行升级或退役节点时。
kubectl drain <node_name>