组件版本和集群环境

集群组件和版本

  • Kubernetes 1.6.2
  • Docker 17.04.0-ce
  • Etcd 3.1.6
  • Flanneld 0.7.1 vxlan 网络
  • TLS 认证通信 (所有组件,如 etcd、kubernetes master 和 node)
  • RBAC 授权
  • kubelet TLS BootStrapping
  • kubedns、dashboard、heapster (influxdb、grafana)、EFK (elasticsearch、fluentd、kibana) 插件
  • 私有 docker registry,使用 ceph rgw 后端存储,TLS + HTTP Basic 认证

集群机器

  • 10.64.3.7
  • 10.64.3.8
  • 10.66.3.86

本着测试的目的,etcd 集群、kubernetes master 集群、kubernetes node 均使用这三台机器。

若有安装 Vagrant 与 Virtualbox,这三台机器可以用本着提供的 Vagrantfile 来建置:

  1. $ cd vagrant
  2. $ vagrant up

集群环境变量

后续的部署步骤将使用下面定义的全局环境变量,根据自己的机器、网络情况修改:

  1. # TLS Bootstrapping 使用的 Token,可以使用命令 head -c 16 /dev/urandom | od -An -t x | tr -d ' ' 生成
  2. BOOTSTRAP_TOKEN="41f7e4ba8b7be874fcff18bf5cf41a7c"
  3. # 建议用 未用的网段 来定义服务网段和 Pod 网段
  4. # 服务网段 (Service CIDR),部署前路由不可达,部署后集群内使用 IP:Port 可达
  5. SERVICE_CIDR="10.254.0.0/16"
  6. # POD 网段 (Cluster CIDR),部署前路由不可达,**部署后**路由可达 (flanneld 保证)
  7. CLUSTER_CIDR="172.30.0.0/16"
  8. # 服务端口范围 (NodePort Range)
  9. NODE_PORT_RANGE="8400-9000"
  10. # etcd 集群服务地址列表
  11. ETCD_ENDPOINTS="https://10.64.3.7:2379,https://10.64.3.8:2379,https://10.66.3.86:2379"
  12. # flanneld 网络配置前缀
  13. FLANNEL_ETCD_PREFIX="/kubernetes/network"
  14. # kubernetes 服务 IP (预分配,一般是 SERVICE_CIDR 中第一个IP)
  15. CLUSTER_KUBERNETES_SVC_IP="10.254.0.1"
  16. # 集群 DNS 服务 IP (从 SERVICE_CIDR 中预分配)
  17. CLUSTER_DNS_SVC_IP="10.254.0.2"
  18. # 集群 DNS 域名
  19. CLUSTER_DNS_DOMAIN="cluster.local."
  • 打包后的变量定义见 environment.sh,后续部署时会提示导入该脚本;

分发集群环境变量定义脚本

把全局变量定义脚本拷贝到所有机器的 /root/local/bin 目录:

  1. $ cp environment.sh /root/local/bin
  2. $