## 組件版本 && 集群環境
Master節點有三個服務進程:①kube-apiserver、②kube-controller-manager、③kube-scheduler
Node節點有兩個服務進程:①kubelet、②kube-proxy
#### 集群環境變量(后續的部署會用到全局變量,可根據自己的機器、網絡進行修改)
```yaml
# TLS Bootstrapping 使用的Token,可以使用命令 head -c 16 /dev/urandom | od -An -t x | tr -d ' ' 生成
BOOTSTRAP_TOKEN="f6b74847f83791f17203c09840d1664b"
# 建議使用未用的網段來定義服務網段和Pod 網段
# 服務網段(Service CIDR),部署前路由不可達,部署后集群內部使用IP:Port可達
SERVICE_CIDR="10.254.0.0/16"
# Pod 網段(Cluster CIDR),部署前路由不可達,部署后路由可達(flanneld 保證)
CLUSTER_CIDR="172.30.0.0/16"
# 服務端口范圍(NodePort Range)
NODE_PORT_RANGE="30000-32766"
# etcd集群服務地址列表
ETCD_ENDPOINTS="https://192.168.10.65:2379,https://192.168.10.64:2379,https://192.168.10.63:2379"
# flanneld 網絡配置前綴
FLANNEL_ETCD_PREFIX="/kubernetes/network"
# kubernetes 服務IP(預先分配,一般為SERVICE_CIDR中的第一個IP)
CLUSTER_KUBERNETES_SVC_IP="10.254.0.1"
# 集群 DNS 服務IP(從SERVICE_CIDR 中預先分配)
CLUSTER_DNS_SVC_IP="10.254.0.2"
# 集群 DNS 域名
CLUSTER_DNS_DOMAIN="cluster.local."
# MASTER API Server地址
MASTER_URL="kube-node-68"
```
**將上面變量保存為: env.sh,然后將腳本拷貝到所有機器的`/usr/k8s/bin`目錄。**
> 為方便后面遷移,我們在集群內定義一個域名用于訪問`apiserver`,在每個節點的`/etc/hosts`文件中添加記錄:**192.168.1.137 k8s-api.virtual.local k8s-api**
>
> 其中`192.168.1.137`為master01 的IP,暫時使用該IP 來做apiserver 的負載地址
## 創建CA證書和秘鑰
#### 安裝cfssl
```shell
$ wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
$ chmod +x cfssl_linux-amd64
$ sudo mv cfssl_linux-amd64 /usr/k8s/bin/cfssl
$ wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
$ chmod +x cfssljson_linux-amd64
$ sudo mv cfssljson_linux-amd64 /usr/k8s/bin/cfssljson
$ wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64
$ chmod +x cfssl-certinfo_linux-amd64
$ sudo mv cfssl-certinfo_linux-amd64 /usr/k8s/bin/cfssl-certinfo
$ export PATH=/usr/k8s/bin:$PATH #為了方便,將/usr/k8s/bin設置成環境變量
$ mkdir ssl && cd ssl
$ cfssl print-defaults config > config.json
$ cfssl print-defaults csr > csr.json
```
#### 創建CA
將上面創建` config.json`文件修改為 `ca-config.json` (文件位置/etc/kubernetes/ssl)
```json
$ cat ca-config.json
{
"signing": {
"default": {
"expiry": "87600h"
},
"profiles": {
"kubernetes": {
"expiry": "87600h",
"usages": [
"signing",
"key encipherment",
"server auth",
"client auth"
]
}
}
}
}
```
將上面創建的` csr.json `文件修改為` ca-csr.json` (文件位置/etc/kubernetes/ssl)
```json
{
"CN": "kubernetes",
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"L": "BeiJing",
"ST": "BeiJing",
"O": "k8s",
"OU": "System"
}
]
}
```
生成CA證書
#### 分發證書
將生成的CA證書、秘鑰文件、配置文件拷貝到所有的機器的` /etc/kubernetes/ssl `目錄下面:
```shell
$ sudo mkdir -p /etc/kubernetes/ssl
$ sudo cp ca* /etc/kubernetes/ssl
```
- Docker
- Docker入門
- docker管理UI
- 封裝各大數據組件
- 自主封裝
- 封裝hadoop
- 封裝spark
- 官方封裝
- 封裝hue
- 封裝jenkins
- Swarm
- Swarm入門
- Zookeeper on swarm
- Hue on swarm
- Grafana
- influxDB
- Prometheus
- cAdvisor
- kubernetes
- k8s入門
- k8s部署dashboard
- minikube
- 手動搭建k8s的高可用集群
- 01環境準備
- 02部署etcd集群
- 03配置kubelet
- 04部署flannel網絡
- 05部署master集群
- 06配置高可用
- 07部署node節點
- 08驗證集群
- Monitor
- swarm 監控
- influxDB+Grafana
- Prometheus+Grafana