K8S日常运维手册

Kubernetes(简称 K8S)是一种广泛使用的容器编排平台,能够自动化部署、扩展和管理容器化应用。对于运维人员来说,掌握 Kubernetes 的日常运维技能是确保系统稳定运行的关键。本文将介绍一些 Kubernetes 日常运维的基本操作与技巧,帮助你更好地管理和维护你的 Kubernetes 集群。

1. 集群健康检查

1.1 查看节点状态

确保所有节点都正常运行是 Kubernetes 运维的基础。使用以下命令可以查看节点的状态:

复制代码
kubectl get nodes

输出示例:

sh

复制代码
NAME           STATUS   ROLES    AGE   VERSION
node1          Ready    master   10d   v1.20.2
node2          Ready    <none>   10d   v1.20.2
node3          Ready    <none>   10d   v1.20.2

1.2 检查系统组件状态

系统组件(如 kube-apiserverkube-scheduler 等)的健康状况也非常重要。可以通过以下命令查看:

复制代码
kubectl get componentstatuses

输出示例:

sh

复制代码
NAME                 STATUS    MESSAGE             ERROR
scheduler            Healthy   ok
controller-manager   Healthy   ok
etcd-0               Healthy   {"health":"true"}

2. 日志管理

2.1 查看 Pod 日志

当某个应用出现问题时,查看 Pod 的日志是定位问题的第一步。使用以下命令可以查看某个 Pod 的日志:

复制代码
kubectl logs <pod-name>

如果 Pod 有多个容器,可以指定容器名称:

复制代码
kubectl logs <pod-name> -c <container-name>

2.2 实时查看日志

可以使用 -f 选项实时查看日志输出:

复制代码
kubectl logs -f <pod-name>

3. 资源管理

3.1 扩展/缩减 Deployment

根据业务需求,可能需要动态调整应用的副本数。可以使用以下命令扩展或缩减 Deployment:

sh

复制代码
kubectl scale deployment <deployment-name> --replicas=<number>

3.2 更新镜像

当需要更新应用镜像时,可以使用以下命令:

sh

复制代码
kubectl set image deployment/<deployment-name> <container-name>=<new-image>

4. 备份与恢复

4.1 备份 ETCD 数据

ETCD 是 Kubernetes 的数据存储核心,定期备份 ETCD 数据是非常重要的。可以使用以下命令备份 ETCD 数据:

sh

复制代码
ETCDCTL_API=3 etcdctl snapshot save <backup-file>

4.2 恢复 ETCD 数据

如果出现数据丢失或损坏情况,可以使用以下命令恢复 ETCD 数据:

sh

复制代码
ETCDCTL_API=3 etcdctl snapshot restore <backup-file> --data-dir /var/lib/etcd

5. 安全管理

5.1 创建 RBAC 角色和绑定

Kubernetes 使用 RBAC(基于角色的访问控制)来管理权限。以下是创建一个新角色及其绑定的示例:

创建角色:

yaml

复制代码
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: default
  name: pod-reader
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get", "watch", "list"]

创建角色绑定:

yaml

复制代码
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: read-pods
  namespace: default
subjects:
- kind: User
  name: "user1"
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: Role
  name: pod-reader
  apiGroup: rbac.authorization.k8s.io

应用配置:

sh

复制代码
kubectl apply -f role.yaml
kubectl apply -f rolebinding.yaml

结论

Kubernetes 日常运维涉及多个方面,从集群健康检查、日志管理、资源管理,到备份恢复和安全管理,每一个环节都至关重要。希望本文提供的操作指南能帮助你更高效地进行 Kubernetes 集群的日常运维工作。

记得定期更新你的 Kubernetes 版本,并关注官方更新的最佳实践,以确保你的集群安全、稳定地运行。

相关推荐
江湖有缘7 小时前
Docker实战 :使用Docker部署OneTerm堡垒机
运维·docker·容器
姜太小白8 小时前
【Linux】df -h 卡住问题的通用排查与解决方案总结
linux·运维·php
张忠琳8 小时前
【NPU】Ascend Docker Runtime v26.0.1 之二 runtime/process/process.go — 超深度逐行分析
云原生·容器·架构·kubernetes·npu·docker-runtime
fengyehongWorld8 小时前
Linux 终端快捷键
linux·运维
hyf3266339 小时前
泛程序:从零开始搭建稳定程序项目框架
运维·服务器·爬虫·百度·seo
为自己_带盐10 小时前
安敢越雷池一步?浅尝雷池WAF社区版
运维·web安全
NiceCloud喜云10 小时前
海外云服务器怎么选?适用场景、价格和避坑经验总结
运维·服务器
easy_coder10 小时前
Linux LVM 知识文档
linux·运维
小小的木头人11 小时前
Ubuntu 使用 udev + systemd + UUID 实现 USB 硬盘自动挂载
linux·运维·ubuntu
Kevin Wang72712 小时前
Nvidia-AGX-spark部署手册——课堂质量诊断(jetpack:r36)
python·docker·容器