00.组件版本和配置策略

集群机器

  • m7-demo-136001:172.27.136.1
  • m7-demo-136002:172.27.136.2
  • m7-demo-136003:172.27.136.3

本文档中的 etcd 集群、master 节点、worker 节点均使用这三台机器。

组件版本

  • Kubernetes 1.8.15
  • Docker 18.06.1-ce
  • Etcd 3.3.9
  • Flanneld 0.10.0
  • 插件:
    • kube-dns
    • Dashboard
    • Heapster (influxdb、grafana)
    • EFK (elasticsearch、fluentd、kibana)
  • 镜像仓库:
    • docker registry
    • harbor

主要配置策略

kube-apiserver:

  • 关闭非安全端口 8080 和匿名访问;
  • 在安全端口 6443 接收 https 请求;
  • 严格的认证和授权策略 (x509、token、RBAC);
  • 开启 bootstrap token 认证,支持 kubelet TLS bootstrapping;
  • 使用 https 访问 kubelet、etcd,加密通信;

kube-controller-manager:

  • 3 节点高可用;
  • 使用 kubeconfig 访问 apiserver 的安全端口;
  • 自动 approve kubelet 证书签名请求 (CSR),证书过期后自动轮转;
  • 各 controller 使用自己的 ServiceAccount 访问 apiserver;

kube-scheduler:

  • 3 节点高可用;
  • 使用 kubeconfig 访问 apiserver 的安全端口;

kubelet:

  • 使用 TLS bootstrap 机制自动生成 client 和 server 证书,过期后自动轮转;
  • 在 KubeletConfiguration 类型的 JSON 文件配置主要参数;
  • 关闭只读端口,在安全端口 10250 接收 https 请求,对请求进行认证和授权,拒绝匿名访问和非授权访问;
  • 使用 kubeconfig 访问 apiserver 的安全端口;

kube-proxy:

  • 使用 kubeconfig 访问 apiserver 的安全端口;
  • 在 KubeProxyConfiguration 类型的 JSON 文件配置主要参数;
  • 使用 iptables 代理模式;

集群插件:

  • DNS:kubedns;
  • Dashboard:支持登录认证;
  • Metric:heapster 使用 https 访问 kubelet 安全端口;
  • Log:Elasticsearch、Fluend、Kibana;
  • Registry 镜像库:docker-registry、harbor;