学习笔记 k8s常用kubectl命令

k8s常用kubectl命令

pod 相关

强制删除pod

pod 状态terminal了,需要强制删除

python 复制代码
kubectl delete pod <pod_name> --grace-period=0 --force
kubectl delete pod test --grace-period=0 --force

查看 Pod 中指定容器的日志

如果 Pod 中有多个容器,你可以使用 -c 或 --container 选项指定要查看的容器的名称:

python 复制代码
kubectl logs <pod_name> -c <container_name>
kubectl logs my-pod -c my-container

查看之前的日志

显示 Pod 上次运行时的日志

python 复制代码
kubectl logs -p <pod_name> -c <container_name>
kubectl logs -p my-pod -c my-container

pod 扩容

Deployment 实现pod的扩容

python 复制代码
kubectl scale deployment <deployment_name> --replicas=<desired_replica_count>
kubectl scale deployment my-deployment --replicas=3
kubectl get deployment

StatefulSet 的扩容

python 复制代码
kubectl scale statefulset <statefulset_name> --replicas=<desired_replica_count>
kubectl scale statefulset my-statefulset --replicas=5
kubectl get statefulset

ReplicaSet 的扩容

python 复制代码
kubectl scale replicasets <replicaset_name> --replicas=<desired_replica_count>
kubectl scale replicasets my-replicaset --replicas=4
kubectl get replicasets

Horizontal Pod Autoscaler(HPA)根据资源使用情况自动调整Pod的副本数量

当CPU利用率超过70%时,HPA将尝试增加Pod的数量,但最多不超过10个,最少不少于1个

python 复制代码
kubectl autoscale deployment my-deployment --cpu-percent=70 --min=1 --max=10
kubectl get hpa

etcd 备份

定位 etcd 数据目录:

在大多数情况下,etcd 数据目录位于 /var/lib/etcd。你可以通过查看 etcd 的配置文件或系统服务来确认具体的数据目录。

python 复制代码
etcdctl --endpoints=<etcd-endpoint> snapshot save <backup-file-name>
etcdctl --endpoints=http://localhost:2379 snapshot save /path/to/backup.db

备份包含证书的集群:

python 复制代码
etcdctl --endpoints=<etcd-endpoint> --cacert=/path/to/ca.crt --cert=/path/to/client.crt --key=/path/to/client.key snapshot save <backup-file-name>

恢复备份:

python 复制代码
etcdctl snapshot restore <backup-file-name> --data-dir /var/lib/etcd-from-backup

请注意,备份 etcd 数据是一个敏感的操作,建议在执行备份和恢复之前详细了解 etcd 的配置和集群状态。此外,确保备份是定期进行的,以便在需要时能够迅速恢复数据。

集群

设置集群上下文配置文件

设置 Kubernetes 配置文件(kubeconfig)中的上下文信息

python 复制代码
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:关联的命名空间。

创建了一个名为 "my-context" 的上下文,该上下文与名为 "my-cluster" 的集群和名为 "my-user" 的用户关联,以及指定了默认的命名空间为 "my-namespace":

python 复制代码
kubectl config set-context my-context --cluster=my-cluster --user=my-user --namespace=my-namespace

切换到这个新创建的上下文

python 复制代码
kubectl config use-context my-context

切换集群

一个集群上下文(Context)是一组集群、用户和命名空间的组合,用于标识 kubectl 操作的目标。

查看所有上下文

python 复制代码
kubectl config get-contexts

切换到指定上下文

python 复制代码
kubectl config use-context <context-name>
kubectl config use-context my-cluster-context

确认是否切换成功

python 复制代码
kubectl config current-context

节点

  • cordon 主要用于禁用调度,不会影响已经运行的 Pod。
  • drain 则用于节点的优雅退役,它会逐个驱逐节点上的 Pod,并尝试在其他节点上重新调度。

cordon

  • kubectl cordon 用于禁用节点的调度禁用节点的调度,防止新的 Pod 被调度到该节点上。这不会影响已经运行在节点上的 Pod。这个命令可以用于临时地排除一个节点,以进行维护或故障排除,而不中断正在运行的工作负载。
python 复制代码
kubectl cordon <node_name>

drain

  • kubectl drain 用于执行一个节点的优雅退役。它首先使用 cordon 将节点标记为不可调度,然后它会逐个驱逐节点上的 Pod。在驱逐 Pod 之前,它会尝试在其他节点上重新调度这些 Pod。这个命令常用于需要从节点上删除所有工作负载,以进行升级或退役节点时。
python 复制代码
kubectl drain <node_name>
相关推荐
知识分享小能手5 小时前
Vue3 学习教程,从入门到精通,Vue 3 + Tailwind CSS 全面知识点与案例详解(31)
前端·javascript·css·vue.js·学习·typescript·vue3
茴香豆的茴15 小时前
转码刷 LeetCode 笔记[2]:203. 移除链表元素(python)
笔记·leetcode·链表
wdfk_prog6 小时前
[Linux]学习笔记系列 -- [arm][lds]
linux·运维·arm开发·笔记·学习
小白不想白a7 小时前
【k8s】k8s中的几个概念性问题
云原生·容器·kubernetes
晨非辰7 小时前
#C语言——刷题攻略:牛客编程入门训练(六):运算(三)-- 涉及 辗转相除法求最大公约数
c语言·开发语言·经验分享·学习·学习方法·visual studio
无名咸鱼7 小时前
CICD部署流程详解文档笔记
笔记·ci/cd
北巷初晴、7 小时前
Kubernetes-核心概念Service
云原生·容器·kubernetes
Gloria_niki8 小时前
爬虫与数据分析结合案例学习总结
爬虫·学习·数据分析
秋风战士8 小时前
通信算法之306:精通FPGA-笔记核心
笔记·fpga开发
一颗正在价投韭菜8 小时前
《范仲淹传》读书笔记与摘要
笔记·学习·范仲淹