kubernetes运维
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年