1. 首页 > Kubernetes教程 > 正文

Kubernetes教程FG004-Kubernetes集群管理与日常操作实战解析

本文档风哥主要介绍Kubernetes集群的管理与日常操作,包括集群管理、应用管理、资源监控、日常检查、故障排查、伸缩操作等内容,风哥教程参考Kubernetes官方文档Cluster Administration指南,适合DevOps工程师和系统管理员在学习和测试中使用,如果要应用于生产环境则需要自行确认。

Part01-基础概念与理论知识

1.1 集群管理概述

Kubernetes集群管理包括以下几个方面:

  • 节点管理:添加、移除、维护节点
  • 应用管理:部署、更新、回滚应用
  • 资源管理:管理CPU、内存、存储等资源
  • 网络管理:配置网络策略、服务发现
  • 安全管理:配置RBAC、Pod安全策略
  • 监控管理:监控集群状态、应用性能
  • 备份恢复:备份集群数据、灾难恢复

1.2 kubectl基础

kubectl是Kubernetes的命令行工具,用于与集群交互:

# kubectl常用命令
$ kubectl get nodes # 查看节点状态
$ kubectl get pods # 查看Pod状态
$ kubectl get services # 查看服务状态
$ kubectl get deployments # 查看部署状态
$ kubectl describe node # 查看节点详细信息
$ kubectl describe pod # 查看Pod详细信息
$ kubectl logs # 查看Pod日志
$ kubectl exec # 在Pod中执行命令
$ kubectl apply # 应用配置
$ kubectl delete # 删除资源
$ kubectl scale # 伸缩部署
$ kubectl rollout # 管理部署滚动更新

1.3 资源管理

Kubernetes的资源管理:

  • CPU:以毫核(m)为单位,1核=1000m
  • 内存:以字节为单位,支持Ki、Mi、Gi等单位
  • 存储:通过PersistentVolume和PersistentVolumeClaim管理
  • 资源请求:Pod运行所需的最小资源
  • 资源限制:Pod运行所能使用的最大资源

Part02-生产环境规划与建议

2.1 日常操作规划

生产环境Kubernetes集群的日常操作规划:

,学习交流加群风哥微信: itpux-com。

# 日常操作计划
– 每日:检查集群状态、应用状态、资源使用情况
– 每周:备份etcd数据、检查日志、更新镜像
– 每月:安全扫描、性能优化、版本升级
– 每季度:灾难恢复演练、集群扩容、网络优化
# 操作流程
1. 检查集群状态
2. 检查应用状态
3. 检查资源使用情况
4. 处理告警和故障
5. 执行定期维护任务
6. 记录操作日志

2.2 资源规划

生产环境Kubernetes集群的资源规划:

# 资源规划示例
– 控制平面节点:8核CPU、16GB内存、500GB存储
– 工作节点:16核CPU、32GB内存、1TB存储
– Pod资源请求:CPU 100m、内存 256Mi
– Pod资源限制:CPU 1000m、内存 1Gi
– 集群容量:支持100个Pod、50个服务
# 资源优化建议
– 为Pod设置合理的资源请求和限制
– 使用Horizontal Pod Autoscaler自动伸缩
– 使用Cluster Autoscaler自动扩缩节点
– 定期清理未使用的资源

2.3 备份策略

生产环境Kubernetes集群的备份策略:

# 备份策略
– etcd数据:每日备份,保留7天
– 配置文件:每次修改后备份
– 应用数据:根据应用重要性制定备份计划
– 灾难恢复:每季度进行一次灾难恢复演练
# 备份工具
– etcdctl:备份etcd数据
– velero:备份集群资源和持久化存储
– 自定义脚本:备份配置文件和应用数据

Part03-生产环境项目实施方案

3.1 集群管理

生产环境Kubernetes集群的管理,风哥提示:。

,学习交流加群风哥QQ113257174。
# 节点管理
$ kubectl cordon node fgedu-worker1 # 标记节点为不可调度
$ kubectl uncordon node fgedu-worker1 # 标记节点为可调度
$ kubectl drain node fgedu-worker1 # 清空节点上的Pod
$ kubectl delete node fgedu-worker1 # 删除节点
# 集群升级
$ kubeadm upgrade plan # 检查升级计划
$ kubeadm upgrade apply v1.28.0 # 升级集群
# 证书管理
$ kubeadm certs check # 检查证书状态
$ kubeadm certs renew all # 续期所有证书
# 配置管理
$ kubectl config view # 查看当前配置
$ kubectl config use-context # 切换上下文

3.2 应用管理

生产环境Kubernetes集群的应用管理:

# 应用部署
$ kubectl apply -f deployment.yaml # 部署应用
$ kubectl create deployment nginx –image=nginx # 创建部署
# 应用更新
$ kubectl set image deployment/nginx nginx=nginx:1.21 # 更新镜像
$ kubectl rollout status deployment/nginx # 查看滚动更新状态
# 应用回滚
$ kubectl rollout history deployment/nginx # 查看部署历史
$ kubectl rollout undo deployment/nginx # 回滚到上一版本
$ kubectl rollout undo deployment/nginx –to-revision=2 # 回滚到指定版本
# 应用伸缩
$ kubectl scale deployment/nginx –replicas=3 # 手动伸缩
$ kubectl autoscale deployment/nginx –min=2 –max=5 –cpu-percent=80 # 自动伸缩

3.3 资源监控

生产环境Kubernetes集群的资源监控。

# 资源使用情况
$ kubectl top nodes # 查看节点资源使用情况
$ kubectl top pods # 查看Pod资源使用情况
$ kubectl top pods -n kube-system # 查看系统Pod资源使用情况
# 存储使用情况
$ kubectl get persistentvolumes # 查看持久化卷
$ kubectl get persistentvolumeclaims # 查看持久化卷声明
$ kubectl describe persistentvolume # 查看持久化卷详细信息
# 网络使用情况
$ kubectl get services # 查看服务
$ kubectl get endpoints # 查看端点
$ kubectl get networkpolicies # 查看网络策略,更多视频教程www.fgedu.net.cn。

Part04-生产案例与实战讲解

4.1 日常检查

生产环境Kubernetes集群的日常检查。

# 检查集群状态
$ kubectl cluster-info
Kubernetes control plane is running at https://192.168.1.100:6443
CoreDNS is running at https://192.168.1.100:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
# 检查节点状态
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
fgedu-master1 Ready control-plane,master 7d v1.28.0
fgedu-master2 Ready control-plane,master 7d v1.28.0
fgedu-master3 Ready control-plane,master 7d v1.28.0
fgedu-worker1 Ready 7d v1.28.0
fgedu-worker2 Ready 7d v1.28.0
# 检查Pod状态
$ kubectl get pods –all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system calico-kube-controllers-6d4b75cb6d-7f5f8 1/1 Running 0 7d
kube-system calico-node-4q7k8 1/1 Running 0 7d
kube-system calico-node-7c9x6 1/1 Running 0 7d
kube-system calico-node-8d2k3 1/1 Running 0 7d
kube-system calico-node-9f5g7 1/1 Running 0 7d
kube-system calico-node-b7c4d 1/1 Running 0 7d
kube-system coredns-6d4b75cb6d-7f5f8 1/1 Running 0 7d
kube-system coredns-6d4b75cb6d-8k45d 1/1 Running 0 7d
kube-system etcd-fgedu-master1 1/1 Running 0 7d
kube-system etcd-fgedu-master2 1/1 Running 0 7d
kube-system etcd-fgedu-master3 1/1 Running 0 7d
kube-system kube-apiserver-fgedu-master1 1/1 Running 0 7d
kube-system kube-apiserver-fgedu-master2 1/1 Running 0 7d
kube-system kube-apiserver-fgedu-master3 1/1 Running 0 7d
kube-system kube-controller-manager-fgedu-master1 1/1 Running 0 7d
kube-system kube-controller-manager-fgedu-master2 1/1 Running 0 7d
kube-system kube-controller-manager-fgedu-master3 1/1 Running 0 7d
kube-system kube-proxy-4q7k8 1/1 Running 0 7d
kube-system kube-proxy-7c9x6 1/1 Running 0 7d
kube-system kube-proxy-8d2k3 1/1 Running 0 7d
kube-system kube-proxy-9f5g7 1/1 Running 0 7d
kube-system kube-proxy-b7c4d 1/1 Running 0 7d
kube-system kube-scheduler-fgedu-master1 1/1 Running 0 7d
kube-system kube-scheduler-fgedu-master2 1/1 Running 0 7d
kube-system kube-scheduler-fgedu-master3 1/1 Running 0 7d
# 检查资源使用情况
$ kubectl top nodes
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
fgedu-master1 125m 6% 1638Mi 20%
fgedu-master2 112m 5% 1542Mi 19%,更多学习教程公众号风哥教程itpux_com。
fgedu-master3 108m 5% 1498Mi 18%
fgedu-worker1 256m 12% 3245Mi 40%
fgedu-worker2 234m 11% 3012Mi 37%

4.2 故障排查

生产环境Kubernetes集群的故障排查。

# 查看Pod日志
$ kubectl logs pod/nginx-6d6f58987b-7f5f8
$ kubectl logs pod/nginx-6d6f58987b-7f5f8 –previous # 查看上一个容器的日志
# 查看Pod详细信息
$ kubectl describe pod/nginx-6d6f58987b-7f5f8
# 查看节点详细信息
$ kubectl describe node fgedu-worker1
# 查看事件
$ kubectl get events
# 进入Pod执行命令
$ kubectl exec -it pod/nginx-6d6f58987b-7f5f8 — /bin/bash
# 查看集群信息
$ kubectl cluster-info dump > cluster-info.log

4.3 伸缩操作

生产环境Kubernetes集群的伸缩操作。

# 手动伸缩部署
$ kubectl scale deployment/nginx –replicas=5
# 自动伸缩部署
$ kubectl autoscale deployment/nginx –min=2 –max=10 –cpu-percent=80
# 查看自动伸缩状态
$ kubectl get hpa
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
nginx Deployment/nginx 25%/80% 2 10 2 10m
# 伸缩节点池(使用Cluster Autoscaler)
$ kubectl get cm cluster-autoscaler-status -n kube-system -o yaml

Part05-风哥经验总结与分享

5.1 最佳实践

Kubernetes集群管理的最佳实践:

  • 定期备份:定期备份etcd数据,确保数据安全
  • 资源管理:为Pod设置合理的资源请求和限制
  • 监控告警:部署监控系统,设置合理的告警阈值
  • 安全加固:配置RBAC,启用Pod安全策略
  • 版本管理:定期升级Kubernetes版本,保持系统更新
  • 文档记录:记录集群配置和操作步骤,便于故障排查
  • 灾难恢复:制定灾难恢复计划,定期进行演练

,from K8S+DB视频:www.itpux.com。

5.2 常见问题

Kubernetes集群管理的常见问题。

# 常见问题及解决方案
## 1. Pod处于Pending状态
– 原因:资源不足、节点亲和性冲突、调度器问题
– 解决方案:检查节点资源,调整Pod资源请求,检查调度器状态
## 2. Pod处于CrashLoopBackOff状态
– 原因:应用程序崩溃、配置错误、依赖服务不可用
– 解决方案:查看Pod日志,检查应用配置,确保依赖服务正常运行

## 3. 节点NotReady
– 原因:kubelet服务未运行、网络问题、资源不足
– 解决方案:检查kubelet服务状态,检查网络连接,检查资源使用情况
## 4. 服务不可访问
– 原因:网络问题、Service配置错误、Pod未就绪
– 解决方案:检查网络连接,检查Service配置,检查Pod状态
## 5. etcd集群故障
– 原因:网络分区、磁盘故障、内存不足
– 解决方案:检查网络连接,检查磁盘状态,增加内存资源

5.3 优化建议

Kubernetes集群管理的优化建议:

  1. 资源优化:为Pod设置合理的资源请求和限制,避免资源浪费
  2. 网络优化:选择合适的网络插件,配置网络策略,优化网络性能
  3. 存储优化:使用高性能存储,配置存储类,优化存储性能
  4. 安全优化:配置RBAC,启用Pod安全策略,定期进行安全扫描
  5. 监控优化:部署Prometheus和Grafana,设置合理的告警阈值
  6. 备份优化:定期备份etcd数据,制定灾难恢复计划
  7. 版本优化:定期升级Kubernetes版本,保持系统更新
  8. 文档优化:记录集群配置和操作步骤,便于故障排查
持续学习:Kubernetes是一个快速发展的技术,建议持续关注官方文档和社区动态,不断学习和实践,提升Kubernetes的使用和管理能力。

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息