Kubernetes架构深度解析
K8s是云原生时代的操作系统,理解架构才能用好它.
控制平面组件
- kube-apiserver: 所有请求的入口,RESTful API
- etcd: 分布式KV存储,保存集群所有状态
- kube-scheduler: 决定Pod调度到哪个节点
- kube-controller-manager: 维持期望状态
常用排障命令
# 查看集群状态
kubectl get nodes
kubectl get pods -A
# 查看Pod详情
kubectl describe pod POD_NAME -n NAMESPACE
# 查看日志
kubectl logs -f POD_NAME -n NAMESPACE
# 进入容器调试
kubectl exec -it POD_NAME -- /bin/sh
# 查看资源使用
kubectl top nodes
kubectl top pods -A
Deployment最佳实践
# deployment.yaml
apiVersion: apps/v1
kind: Deployment
spec:
replicas: 3
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
maxSurge: 1
template:
spec:
containers:
- name: app
resources:
requests:
cpu: '100m'
memory: '128Mi'
limits:
cpu: '500m'
memory: '512Mi'
总结:K8s核心是声明式API,描述期望状态,控制器负责实现.
