溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何用二進(jìn)制包部署Kubernetes集群?

發(fā)布時(shí)間:2020-05-30 13:25:27 來(lái)源:億速云 閱讀:386 作者:Leah 欄目:系統(tǒng)運(yùn)維

如何用二進(jìn)制包部署Kubernetes集群?針對(duì)這個(gè)問(wèn)題,今天小編總結(jié)這篇有關(guān)Kubernetes集群部署的文章,希望幫助更多想解決這個(gè)問(wèn)題的同學(xué)找到更加簡(jiǎn)單易行的辦法。

架構(gòu)總規(guī)劃圖

如何用二進(jìn)制包部署Kubernetes集群?

環(huán)境準(zhǔn)備

三臺(tái)主機(jī),一臺(tái)作為master節(jié)點(diǎn),二臺(tái)作為node節(jié)點(diǎn)。

其中master節(jié)點(diǎn)需要安裝以下組件
kube-apiserver、kube-controller-manager、kube-scheduler、etcd
node節(jié)點(diǎn)需要安裝以下組件
kubelet、kube-proxy、docker、flannel、etcd

組件介紹

如何用二進(jìn)制包部署Kubernetes集群?

Flanner:Flannel是針對(duì)Kubernetes設(shè)計(jì)的一個(gè)網(wǎng)絡(luò)規(guī)劃服務(wù),簡(jiǎn)單來(lái)說(shuō),它的功能是讓集群中的不同節(jié)點(diǎn)主機(jī)創(chuàng)建的Docker容器都具有全集群唯一的虛擬IP地址。但在默認(rèn)的Docker配置中,每個(gè)Node的Docker服務(wù)會(huì)分別負(fù)責(zé)所在節(jié)點(diǎn)容器的IP分配。Node內(nèi)部得容器之間可以相互訪問(wèn),但是跨主機(jī)(Node)網(wǎng)絡(luò)相互間是不能通信。Flannel設(shè)計(jì)目的就是為集群中所有節(jié)點(diǎn)重新規(guī)劃IP地址的使用規(guī)則,從而使得不同節(jié)點(diǎn)上的容器能夠獲得"同屬一個(gè)內(nèi)網(wǎng)"且"不重復(fù)的"IP地址,并讓屬于不同節(jié)點(diǎn)上的容器能夠直接通過(guò)內(nèi)網(wǎng)IP通信。

部署流程

從官方網(wǎng)站上下載二進(jìn)制包

部署etcd存儲(chǔ)

etcd存儲(chǔ)在master節(jié)點(diǎn)和node節(jié)點(diǎn)都需要部署,首先在master節(jié)點(diǎn)部署

編輯腳本下載官方cfssl包

vim cfssl.sh
curl -L https:#pkg.cfssl.org/ R1.2/cfssl_linux-amd64 -o /usr/local/bin/cfssl
curl -L https:#pkg.cfssl.org/ R1.2/cfssljson_linux-amd64 -o /usr/local/bin/cfssljson
curl -L https:#pkg.cfssl.org/ R1.2/cfssl-certinfo_linux-amd64 -o /usr/local/bin/cfssl-certinfo

chmod +x /usr/local/bin/cfssl /usr/local/bin/cfssljson /usr/local/bin/cfssl-certinfo

執(zhí)行腳本

bash cfssl.sh

如何用二進(jìn)制包部署Kubernetes集群?

此時(shí)cd /usr/local/bin/目錄生成三個(gè)文件

cfssl:是生成證書(shū)工具
cfssljson:通過(guò)傳入json文件生成證書(shū)
cfssl-certinfo:是查看證書(shū)信息

給這三個(gè)文件添加執(zhí)行權(quán)限

chmod 777 cfssl cfssl-certinfo cfssljson

定義ca證書(shū),生成證書(shū)

構(gòu)建好二個(gè)腳本,生成證書(shū)
第一個(gè)腳本 vim etcd-cert.sh
定義ca證書(shū)

如何用二進(jìn)制包部署Kubernetes集群?

證書(shū)簽名

如何用二進(jìn)制包部署Kubernetes集群?

如何用二進(jìn)制包部署Kubernetes集群?

cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=www server-csr.json | cfssljson -bare server

上述命令生成所需證書(shū)

第二個(gè)腳本vim etcd.sh

如何用二進(jìn)制包部署Kubernetes集群?
如何用二進(jìn)制包部署Kubernetes集群?

腳本配置完成,重新加載,開(kāi)啟etcd以及設(shè)置開(kāi)機(jī)自啟動(dòng),關(guān)閉防火墻,增強(qiáng)性安全功能

systemctl daemon-reload
systemctl enable etcd
systemctl restart etcd
systemctl stop firewalld.service
setenforce 0

創(chuàng)建k8s目錄,將二個(gè)腳本移動(dòng)至目錄下

mkdir k8s
cd k8s/
mkdir etcd-cert
mv etcd-cert.sh etcd-cert

解壓ETCD 二進(jìn)制包

tar zxvf etcd-v3.3.10-linux-amd64.tar.gz

配置文件,命令文件,證書(shū)

mkdir /opt/etcd/{cfg,bin,ssl} -p    
mv etcd-v3.3.10-linux-amd64/etcd etcd-v3.3.10-linux-amd64/etcdctl /opt/etcd/bin/

證書(shū)拷貝

cp etcd-cert/.pem /opt/etcd/ssl/

進(jìn)入卡住狀態(tài)等待其他節(jié)點(diǎn)加入

bash etcd.sh etcd01 192.168.142.129 etcd02=https:/ /192.168.142.130:2380,etcd03=https:/ /192.168.149.131:2380

使用另外一個(gè)會(huì)話打開(kāi),會(huì)發(fā)現(xiàn)etcd進(jìn)程已經(jīng)開(kāi)啟
ps -ef | grep etcd

拷貝證書(shū)去其他節(jié)點(diǎn)

scp -r /opt/etcd/ root@192.168.142.130:/opt/
scp -r /opt/etcd/ root@192.168.142.131:/opt/

啟動(dòng)腳本拷貝其他節(jié)點(diǎn)

scp /usr/lib/systemd/system/etcd.service root@192.168.142.130:/usr/lib/systemd/system/
scp /usr/lib/systemd/system/etcd.service root@192.168.142.131:/usr/lib/systemd/system/

在node01節(jié)點(diǎn)的操作

修改etcd文件

vim /opt/etcd/cfg/etcd

修改名稱和地址

[Member]
ETCD_NAME="etcd02"
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="https:/ /192.168.142.130:2380"
ETCD_LISTEN_CLIENT_URLS="https:/ /192.168.142.130:2379"

[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="https:/ /192.168.142.130:2380"
ETCD_ADVERTISE_CLIENT_URLS="https:/ /192.168.142.130:2379"
ETCD_INITIAL_CLUSTER="etcd01=http//192.168.142.129:2380,etcd02=https:/ /192.168.14.130:2380,etcd03=https:/ /192.168.142.131:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"

啟動(dòng)服務(wù)

systemctl start etcd
systemctl status etcd

3.在node02節(jié)點(diǎn)的操作

修改etcd文件

vim /opt/etcd/cfg/etcd

修改名稱和地址

[Member]
ETCD_NAME="etcd03"
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="https:#192.168.142.131:2380"
ETCD_LISTEN_CLIENT_URLS="https:#192.168.142.131:2379"

[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="https:#192.168.142.131:2380"
ETCD_ADVERTISE_CLIENT_URLS="https:#192.168.142.131:2379"
ETCD_INITIAL_CLUSTER="etcd01=https:#192.168.142.129:2380,etcd02=https:#192.168.142.130:2380,etcd03=https:#192.168.142.131:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"

啟動(dòng)服務(wù)

systemctl start etcd

部署 flannel

寫入分配的子網(wǎng)段到ETCD中,供flannel使用

/opt/etcd/bin/etcdctl --ca-file=ca.pem --cert-file=server.pem --key-file=server-key.pem --endpoints="https:/ /192.168.149.131:2379,h ttps://192.168.220.140:2379,https:/ /192.168.220.136:2379 set /core os.com /network/config '{ "Network": "172.17.0.0/16", "Backend": {"Type": "vxlan"}}'

拷貝軟件包到所有的 node 節(jié)點(diǎn)

scp flannel-v0.10.0-linux-amd64.tar.gz root@192.168.220.140:/root
scp flannel-v0.10.0-linux-amd64.tar.gz root@192.168.220.136:/root

所有 node 節(jié)點(diǎn)將壓縮包解壓:

tar zvxf flannel-v0.10.0-linux-amd64.tar.gz

在node節(jié)點(diǎn)上,先創(chuàng)建k8s工作工作目錄:

mkdir /opt/kubernetes/{cfg,bin,ssl} -p
mv mk-docker-opts.sh flanneld /opt/kubernetes/bin/*

創(chuàng)建flanner腳本 vim flannel.sh

如何用二進(jìn)制包部署Kubernetes集群?
啟動(dòng)并設(shè)置開(kāi)啟自啟

systemctl daemon-reload
systemctl enable flanneld
systemctl restart flanneld

啟動(dòng)flanner網(wǎng)絡(luò)功能

bash flannel.sh https:// 19 2.1 68.220.131:2379,https:/ /192.168.220.140:2379,http s://192.168.220.136:2379

at /run/flannel/subnet.env
DOCKER_OPT_BIP="--bip=172.17.53.1/24"
DOCKER_OPT_IPMASQ="--ip-masq=false"
DOCKER_OPT_MTU="--mtu=1450"

DOCKER_NETWORK_OPTIONS=" --bip=172.17.53.1/24 --ip-masq=false --mtu=1450"

重啟docker

systemctl daemon-reload
systemctl restart docker

查看flanner網(wǎng)絡(luò)

如何用二進(jìn)制包部署Kubernetes集群?

看完上述內(nèi)容,你們掌握用二進(jìn)制包部署Kubernetes集群的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI