kubernetes部署
1. 环境搭建前期准备
组件版本
-
Kubernetes 1.11.2
-
Docker 18.06.0-ce
-
Etcd v3.3.9
-
Flanneld v0.10.0
-
TLS 认证通信(所有组件,如etcd、kubernetes master 和node)
-
RBAC 授权
-
kubelet TLS Bootstrapping
-
kubedns v1.14.10、dashboard v1.10.0、heapster v1.5.4等插件
etcd 集群 && k8s master 机器 && k8s node 机器
-
master01:ip1
-
node01: ip2
-
node02: ip3
-
node03: ip4
集群环境变量
后续部署将会使用到的全局变量,定义如下(根据自己的机器、网络修改):
建议使用未用的网段来定义服务网段和Pod 网段
服务网段(Service CIDR),部署前路由不可达,部署后集群内部使用IP:Port可达
$ export SERVICE_CIDR="10.254.0.0/16"
Pod 网段(Cluster CIDR),部署前路由不可达,部署后路由可达(flanneld 保证)
$ export CLUSTER_CIDR="172.30.0.0/16"
服务端口范围(NodePort Range)
$ export NODE_PORT_RANGE="30000-32766"
etcd集群服务地址列表
$ export ETCD_ENDPOINTS="https://ip1:2379,https://ip2:2379,https://ip3:2379"
flanneld 网络配置前缀
$ export FLANNEL_ETCD_PREFIX="/kubernetes/network"
kubernetes 服务IP(预先分配,一般为SERVICE_CIDR中的第一个IP)
$ export CLUSTER_KUBERNETES_SVC_IP="10.254.0.1"
集群 DNS 服务IP(从SERVICE_CIDR 中预先分配)
$ export CLUSTER_DNS_SVC_IP="10.254.0.2"
集群 DNS 域名
$ export CLUSTER_DNS_DOMAIN="cluster.local."
MASTER API Server 地址
$ export MASTER_URL="k8s-api.virtual.local"</pre>
2. 创建CA 证书和密钥
kubernetes
系统各个组件需要使用TLS
证书对通信进行加密,这里我们使用CloudFlare
的PKI 工具集cfssl 来生成Certificate Authority(CA) 证书和密钥文件, CA 是自签名的证书,用来签名后续创建的其他TLS 证书。
安装 CFSSL
<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="shell" contenteditable="true" cid="n2710" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 1em 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;"> chmod +x cfssl_linux-amd64
wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
sudo mv cfssljson_linux-amd64 /usr/k8s/bin/cfssljson
chmod +x cfssl-certinfo_linux-amd64
export PATH=/usr/k8s/bin: mkdir ssl && cd ssl
cfssl print-defaults csr > csr.json</pre>
借鉴于https://blog.qikqiak.com/post/manual-install-high-available-kubernetes-cluster