【Kubernetes系列,小白必看】⑧ K8s 运维与监控:保障集群稳定运行

        在云原生技术蓬勃发展的今天,Kubernetes 凭借强大的容器编排与集群管理能力,成为企业构建现代化应用架构的首选。然而,随着集群规模的不断扩大和业务复杂度的提升,Kubernetes 集群的运维与监控面临着巨大挑战。一套高效的运维与监控体系,不仅能及时发现并解决集群中的问题,还能确保业务的连续性和稳定性。

一、Kubernetes 运维基础​

1. 节点管理​

节点添加与删除​

在 Kubernetes 集群中,根据业务需求添加或删除节点是常见操作。添加节点时,首先要确保新节点满足集群的硬件和软件要求,安装好操作系统和必要的软件包,如 Docker、kubelet 和 kube - proxy。然后,在 Master 节点上执行kubeadm token create --print - join - command获取加入命令,在新节点上以管理员身份执行该命令,将新节点加入集群。​

删除节点时,为避免影响业务,需先将节点上的 Pod 迁移到其他节点。可以使用kubectl drain命令,该命令会将节点标记为不可调度,并逐步将节点上的 Pod 驱逐到其他可用节点:

kubectl drain <node - name> --ignore - daemonsets

待 Pod 迁移完成后,可使用kubectl delete node <node - name>命令删除节点。​

节点状态检查​

定期检查节点状态是运维工作的重要内容。通过kubectl get nodes命令,可以查看集群中所有节点的状态,包括节点名称、状态、角色、版本等信息:

$ kubectl get nodes
NAME         STATUS   ROLES    AGE   VERSION
node1        Ready    <none>   3d    v1.22.0
node2        Ready    <none>   3d    v1.22.0

若节点状态为NotReady,需进一步排查问题,可能原因包括网络故障、kubelet 服务异常等。

2. 资源管理​

资源配额设置​

为避免单个 Namespace 或用户占用过多资源,影响其他业务的正常运行,可以设置资源配额。例如,为default Namespace 设置 CPU 和内存的资源配额:

apiVersion: v1
kind: ResourceQuota
metadata:
  name: compute - resources
  namespace: default
spec:
  hard:
    requests.cpu: "10"
    requests.memory: 10Gi
    limits.cpu: "20"
    limits.memory: 20Gi
资源使用情况查看​

使用kubectl top命令可以实时查看 Pod 和节点的资源使用情况,如 CPU 和内存使用率:

$ kubectl top pods
NAME                           CPU(cores)   MEMORY(bytes)
my - pod1                      100m         200Mi
my - pod2                      50m          100Mi

$ kubectl top nodes
NAME         CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%
node1        200m         10%    800Mi           40%
node2        150m         7%     600Mi           30%

二、Kubernetes 监控体系​

1. 监控工具选择​

Prometheus + Grafana​

Prometheus 是一款开源的系统监控和报警工具,它通过拉取式的方式收集各种指标数据,并提供强大的查询语言和告警功能。Grafana 则是一款数据可视化工具,能够将 Prometheus 收集到的数据以直观的图表形式展示出来。​具体的prometheus的详细介绍,可以参考小编的prometheus系列文章,里面有详细的讲解和部署!

部署 Prometheus 和 Grafana 时,可使用官方提供的 Helm Chart。首先,添加 Helm 仓库:

helm repo add prometheus - community https://prometheus - community.github.io/helm - charts
helm repo update

然后,安装 Prometheus 和 Grafana:

helm install prometheus prometheus - community/kube - prometheus - stack

2. 监控指标收集​

节点指标​

Prometheus 可以收集节点的各种指标,如 CPU 使用率、内存使用率、磁盘 I/O、网络流量等。这些指标通过在节点上运行的 Node Exporter 收集,Node Exporter 会暴露一个 HTTP 接口,Prometheus 通过该接口拉取指标数据。​

Pod 指标​

对于 Pod 的监控,通常使用 Kube - State - Metrics。Kube - State - Metrics 会从 Kubernetes API Server 获取各种资源对象的状态信息,如 Pod 的数量、副本数、运行状态等,并将这些信息转换为指标数据,供 Prometheus 收集。

3. 监控数据可视化​

在 Grafana 中,可以创建各种仪表盘,将 Prometheus 收集到的监控数据以直观的图表形式展示出来。例如,创建一个节点资源使用情况的仪表盘,展示节点的 CPU 使用率、内存使用率、磁盘 I/O 等指标的变化趋势,方便运维人员及时发现资源瓶颈。

三、故障排查与处理​

1. 日志查看​

当 Pod 出现问题时,首先要查看 Pod 的日志,以定位问题。使用kubectl logs命令可以查看 Pod 中容器的日志:

kubectl logs <pod - name> [-c <container - name>]

若 Pod 已经终止,可以使用kubectl logs --previous <pod - name> [-c <container - name>]查看之前的日志。​

2. 事件分析​

Kubernetes 会记录集群中的各种事件,如 Pod 的创建、删除、调度失败等。通过kubectl get events命令,可以查看集群中的事件信息:

$ kubectl get events
LAST SEEN   TYPE      REASON            OBJECT                MESSAGE
5m          Normal    Scheduled         pod/my - pod1         Successfully assigned default/my - pod1 to node1
3m          Warning   FailedMount       pod/my - pod1         Unable to mount volumes for pod "my - pod1_default(xxxx)": timeout expired waiting for volumes to attach or mount...

分析事件信息有助于快速定位问题的原因。

3. 网络故障排查​

网络故障是 Kubernetes 集群中常见的问题之一。可以使用kubectl exec命令进入 Pod 内部,使用 ping、traceroute 等工具排查网络问题。例如,进入my - pod1内部,ping 另一个 Pod 的 IP 地址:

kubectl exec -it my - pod1 -- ping <target - ip>

四、集群升级与备份​

1. 集群升级​

随着 Kubernetes 版本的不断更新,及时升级集群可以获得新功能和更好的性能,同时修复已知的安全漏洞。在升级前,要做好充分的准备工作,包括备份集群数据、测试升级过程等。​

使用kubeadm进行集群升级时,首先在 Master 节点上执行kubeadm upgrade plan查看可用的升级版本,然后执行kubeadm upgrade apply进行升级。升级过程中,要密切关注集群状态,确保升级顺利完成。​

2. 数据备份与恢复​

Kubernetes 集群中的数据,如 etcd 中的配置信息、应用的持久化数据等,都需要进行定期备份。对于 etcd 数据,可以使用 etcd 官方提供的备份工具进行备份。对于应用的持久化数据,要根据具体的存储方案,选择合适的备份方法。​

在需要恢复数据时,根据备份数据的类型和存储位置,使用相应的恢复工具进行恢复,确保集群能够快速恢复正常运行。​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

佳腾_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值