首页 英拿实验室 kubernetes运维

kubernetes运维

2026年4月6日
admin
技术文档

Kubernetes运维指南

概述

本指南涵盖Kubernetes集群的部署、管理、监控和故障排查的最佳实践。

集群部署

使用kubeadm部署

# 初始化控制平面
kubeadm init --pod-network-cidr=10.244.0.0/16

# 配置kubectl
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

# 安装网络插件
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

添加工作节点

# 在控制节点获取加入命令
kubeadm token create --print-join-command

# 在工作节点执行加入命令
kubeadm join 192.168.1.100:6443 --token xxx --discovery-token-ca-cert-hash sha256:xxx

应用管理

部署应用

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.21
        ports:
        - containerPort: 80

暴露服务

# 创建Service
kubectl expose deployment nginx-deployment --type=LoadBalancer --port=80

# 查看服务
kubectl get svc

资源管理

资源配额

apiVersion: v1
kind: ResourceQuota
metadata:
  name: compute-quota
  namespace: default
spec:
  hard:
    requests.cpu: "4"
    requests.memory: 8Gi
    limits.cpu: "8"
    limits.memory: 16Gi

限制范围

apiVersion: v1
kind: LimitRange
metadata:
  name: mem-limit-range
spec:
  limits:
  - default:
      memory: 512Mi
    defaultRequest:
      memory: 256Mi
    type: Container

监控告警

安装Prometheus

# 使用Helm安装
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm install prometheus prometheus-community/kube-prometheus-stack

查看监控指标

# 查看节点资源使用
kubectl top nodes

# 查看Pod资源使用
kubectl top pods

日志管理

查看Pod日志

# 查看Pod日志
kubectl logs pod-name

# 查看前100行日志
kubectl logs pod-name --tail=100

# 实时查看日志
kubectl logs -f pod-name

日志收集

# 使用Fluentd收集日志
kubectl apply -f https://raw.githubusercontent.com/fluent/fluentd-kubernetes-daemonset/master/fluentd-daemonset-elasticsearch-rbac.yaml

故障排查

Pod问题排查

# 查看Pod状态
kubectl get pods -o wide

# 查看Pod详细信息
kubectl describe pod pod-name

# 查看Pod事件
kubectl get events --sort-by='.lastTimestamp'

网络问题排查

# 测试Pod间连通性
kubectl exec -it pod-name -- ping target-pod-ip

# 查看Service端点
kubectl get endpoints service-name

存储问题排查

# 查看PV状态
kubectl get pv

# 查看PVC状态
kubectl get pvc

# 查看存储类
kubectl get storageclass

备份恢复

etcd备份

# 备份etcd
ETCDCTL_API=3 etcdctl snapshot save backup.db \
  --endpoints=https://127.0.0.1:2379 \
  --cacert=/etc/kubernetes/pki/etcd/ca.crt \
  --cert=/etc/kubernetes/pki/etcd/server.crt \
  --key=/etc/kubernetes/pki/etcd/server.key

应用备份

# 导出Deployment
kubectl get deployment app-name -o yaml > app-backup.yaml

# 导出Service
kubectl get service app-name -o yaml > service-backup.yaml

---

版本: 1.0 更新日期: 2024年