[原理]Kubernetes架构解析:为什么K8s能管理百万容器?

阿里云推广

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,描述期望状态,控制器负责实现.

发表评论