主機名 | ip | 說明 |
---|---|---|
master-123(複用node) | 192.168.116.123 | etcd flannel kube-apiserver kube-controller-manager kube-scheduler kubelet kube-proxy |
node-124 | 192.168.116.124 | flannel kubelet kube-proxy |
因爲目前只有2臺機器,etcd集羣因爲競選緣由至少須要奇數臺機器才能穩定運行,因此目前暫時使用1臺機器安裝etcd。php
192.168.116.123執行:hostnamectl --static set-hostname master-123
192.168.116.124執行:hostnamectl --static set-hostname node-124html
vi /etc/hostsnode
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.116.123 master-123 192.168.116.124 node-124
wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 chmod +x cfssl_linux-amd64 sudo mv cfssl_linux-amd64 /usr/local/bin/cfssl wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 chmod +x cfssljson_linux-amd64 sudo mv cfssljson_linux-amd64 /usr/local/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/local/bin/cfssl-certinfo
配置config.json文件linux
{ "signing": { "default": { "expiry": "87600h" }, "profiles": { "kubernetes": { "usages": [ "signing", "key encipherment", "server auth", "client auth" ], "expiry": "87600h" } } } }
配置csr.json文件算法
{ "CN": "kubernetes", "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "CN", "ST": "ShangHai", "L": "ShangHai", "O": "k8s", "OU": "System" } ] }
mkdir –p /opt/ssl cd /opt/ssl
執行:cfssl gencert -initca csr.json | cfssljson -bare ca
docker
[root@localhost ssl]# ls -ltr total 20 -rw-r--r--. 1 root root 387 Jul 27 15:01 config.json -rw-r--r--. 1 root root 267 Jul 27 15:04 csr.json -rw-r--r--. 1 root root 1363 Jul 27 15:07 ca.pem -rw-------. 1 root root 1675 Jul 27 15:07 ca-key.pem -rw-r--r--. 1 root root 1005 Jul 27 15:07 ca.csr
建立證書目錄json
mkdir -p /etc/kubernetes/ssl
拷貝全部文件至目錄下centos
cp * /etc/kubernetes/ssl/
將文件拷貝至全部k8s機器上api
scp * root@192.168.116.124:/etc/kubernetes/ssl/
etcd做爲一個高可用鍵值存儲系統,天生就是爲集羣化而設計的。因爲Raft算法在作決策時須要多數節點的投票,因此etcd通常部署集羣推薦奇數個節點,推薦的數量爲三、5或者7個節點構成一個集羣。服務器
上傳文件:etcd-3.1.7-1.el7.x86_64.rpm
執行命令:rpm -ivh etcd-3.1.7-1.el7.x86_64.rpm
下載地址:http://www.rpmfind.net/linux/...
如今只在單matser上建立etcd,以後etcd會添加2個節點
cd /opt/ssl vi etcd-csr.json { "CN": "etcd", "hosts": [ "127.0.0.1", "192.168.116.123", "192.168.116.124", "192.168.116.120", "192.168.116.123", "192.168.116.124", "192.168.116.125", "192.168.116.120" ], "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "CN", "ST": "ShangHai", "L": "ShangHai", "O": "k8s", "OU": "System" } ] }
上面配置文件的ip儘可能包括全部etcd節點的ip,不然須要從新分發證書
生成etcd密鑰
cfssl gencert -ca=/opt/ssl/ca.pem \ -ca-key=/opt/ssl/ca-key.pem \ -config=/opt/ssl/config.json \ -profile=kubernetes etcd-csr.json | cfssljson -bare etcd
查看生成
[root@localhost ssl]# ls -ltr etcd* -rw-r--r--. 1 root root 295 Jul 27 15:22 etcd-csr.json -rw-r--r--. 1 root root 1440 Jul 27 15:24 etcd.pem -rw-------. 1 root root 1679 Jul 27 15:24 etcd-key.pem -rw-r--r--. 1 root root 1066 Jul 27 15:24 etcd.csr
拷貝到etcd服務器
cp etcd* /etc/kubernetes/ssl/ scp etcd* root@198.15.5.28:/etc/kubernetes/ssl scp etcd* root@198.15.5.29:/etc/kubernetes/ssl
若是 etcd 非 root 用戶,讀取證書會提示沒權限
在每一臺ETCD節點上運行
chmod 644 /etc/kubernetes/ssl/etcd-key.pem
vi /usr/lib/systemd/system/etcd.service [Unit] Description=Etcd Server After=network.target After=network-online.target Wants=network-online.target [Service] Type=notify WorkingDirectory=/var/lib/etcd/ User=etcd # set GOMAXPROCS to number of processors ExecStart=/usr/bin/etcd \ --name=etcd1 \ --cert-file=/etc/kubernetes/ssl/etcd.pem \ --key-file=/etc/kubernetes/ssl/etcd-key.pem \ --peer-cert-file=/etc/kubernetes/ssl/etcd.pem \ --peer-key-file=/etc/kubernetes/ssl/etcd-key.pem \ --trusted-ca-file=/etc/kubernetes/ssl/ca.pem \ --peer-trusted-ca-file=/etc/kubernetes/ssl/ca.pem \ --initial-advertise-peer-urls=https://192.168.116.123:2380 \ --listen-peer-urls=https://192.168.116.123:2380 \ --listen-client-urls=https://192.168.116.123:2379,http://127.0.0.1:2379 \ --advertise-client-urls=https://192.168.116.123:2379 \ --initial-cluster-token=k8s-etcd-cluster \ --initial-cluster=etcd1=https://192.168.116.123:2380 \ --initial-cluster-state=new \ --data-dir=/var/lib/etcd Restart=on-failure RestartSec=5 LimitNOFILE=65536 [Install] WantedBy=multi-user.target
若是是多臺etcd,應根據各節點ip的不一樣修改ip,--initial-cluster=etcd1=https://192.168.116.123:2380應該爲全部節點而不是單個節點。
關閉全部節點主機防火牆
關閉防火牆開機自啓動:systemctl disable firewalld
關閉防火牆: systemctl stop firewalld
啓動etcd:
systemctl daemon-reload systemctl enable etcd systemctl start etcd systemctl status etcd
etcdctl --endpoints=https://192.168.116.123:2379 \ --cert-file=/etc/kubernetes/ssl/etcd.pem \ --ca-file=/etc/kubernetes/ssl/ca.pem \ --key-file=/etc/kubernetes/ssl/etcd-key.pem \ cluster-health etcdctl --endpoints=https://192.168.116.123:2379 \ --cert-file=/etc/kubernetes/ssl/etcd.pem \ --ca-file=/etc/kubernetes/ssl/ca.pem \ --key-file=/etc/kubernetes/ssl/etcd-key.pem \ member list
晚上回去更新第二篇:
【從零開始安裝kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及做用