溫馨提示×

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

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

CentOS下Kubernetes集群架設(shè)(一)主機(jī)環(huán)境預(yù)設(shè)

發(fā)布時(shí)間:2020-06-08 17:20:12 來(lái)源:網(wǎng)絡(luò) 閱讀:287 作者:t_huanghai 欄目:云計(jì)算

雖然有Rancher OS和CoreOS這類(lèi)的發(fā)行版,但Kubernetes集群的安裝也不是太麻煩,因此,還是先從最基本的實(shí)驗(yàn)下。以下是本人CentOS7.6上安裝Kubernetes集群的筆記,并且分章節(jié)記錄,持續(xù)更新...。

Kubernetes主機(jī)環(huán)境預(yù)設(shè)

Kubernete集群的主機(jī)生產(chǎn)環(huán)境也有多種選擇,如下:

  • 方案一: 三臺(tái)或者五臺(tái) Master 節(jié)點(diǎn),分別安裝全角色:ETCD , Control Plane ;其他節(jié)點(diǎn)為容器計(jì)算機(jī)節(jié)點(diǎn),分別安裝角色: worker;
  • 方案二: 三臺(tái)節(jié)點(diǎn)分別安裝角色:ETCD;兩臺(tái)節(jié)點(diǎn)分別安裝角色:Control Plane;其他節(jié)點(diǎn)為容器計(jì)算機(jī)節(jié)點(diǎn),分別安裝角色: worker;

但我現(xiàn)在手上只有一臺(tái)7代i7的筆記本,雖有16G內(nèi)存,但這雙核四線(xiàn)程真不夠看啊,單機(jī)和minikube安裝先不考慮,等小型實(shí)驗(yàn)集群實(shí)驗(yàn)好后再逐個(gè)實(shí)現(xiàn)。我的筆記本是安裝的fedora,使用kvm虛擬機(jī)虛擬了三個(gè)主機(jī)每個(gè)主機(jī)也就1vcpu+1G內(nèi)存,分別安裝一個(gè)master節(jié)點(diǎn)和兩個(gè)計(jì)算節(jié)點(diǎn)。
各個(gè)節(jié)點(diǎn)需要安裝的kubernetes組件如下:

  • 主節(jié)點(diǎn):
    • kube-apiserver
    • kube-controller-manager
    • kube-scheduler
    • kube-proxy
    • pause
    • etcd
    • coredns
  • 從節(jié)點(diǎn):
    • kube-proxy
    • pause
    • flannel(本次實(shí)驗(yàn)選定的網(wǎng)絡(luò)插件)

1.2 設(shè)置時(shí)間同步

如chrony,配置文件/etc/chrony.conf(內(nèi)網(wǎng)需要配置時(shí)間服務(wù)器),服務(wù)啟動(dòng)使用systemctl命令。建議無(wú)論內(nèi)網(wǎng)和能連接Internet的環(huán)境都為集群配置時(shí)間同步服務(wù)器。

1.3 配置DNS或者h(yuǎn)osts主機(jī)解析

在/etc/hosts文件中配置集群的IP和主機(jī)名解析(同時(shí)可以減少DNS的解析時(shí)延)

1.4 關(guān)閉防火墻

CentOS7上關(guān)閉防火墻

# systemctl stop firewalld.service

# systemctl disable firewalld.service

1.5 關(guān)閉SELinux

# setenforce 0

同時(shí)配置時(shí)/etc/selinux/config文件

# vim /etc/selinux/config
...
SELINUX=disable

或者

# sed -i 's@^\(SELINUX=\).*@\1disabled@' /etc/sysconfig/selinux

1.6 禁用swap設(shè)備

Kubernetes 1.8 開(kāi)始需要關(guān)閉系統(tǒng) Swap 交換分區(qū),如果不關(guān)閉,則無(wú)法啟動(dòng)。
查看

# free -m

臨時(shí)關(guān)閉

# swapoff -a
# echo "vm.swappiness = 0" >> /etc/sysctl.conf

或者

# swapoff -a && sysctl -w vm.swappiness=0

同時(shí)編輯配置文件/etc/fstab進(jìn)行永久關(guān)閉,即注釋掛載swap設(shè)備的行。

注:本次實(shí)驗(yàn)由于資源有限沒(méi)有關(guān)閉,但后續(xù)有解決方法(僅限于實(shí)驗(yàn)環(huán)境)

1.7 啟用IPVS內(nèi)核模塊

kube-proxy 支持 iptables 和 ipvs,如果條件滿(mǎn)足,默認(rèn)使用 ipvs,否則使用 iptables。

cat <<EOF > /etc/sysctl.d/kubernetes.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
modprobe br_netfilter
sysctl -p /etc/sysctl.d/kubernetes.conf 或者 sysctl --system

由于 ipvs 已經(jīng)加入到了內(nèi)核的主干,所以為 kube-proxy 開(kāi)啟 ipvs 的前提需要加載以下的內(nèi)核模塊:

  • ip_vs
  • ip_vs_rr
  • ip_vs_wrr
  • ip_vs_sh
  • nf_conntrack_ipv4

執(zhí)行以下腳本加載內(nèi)核

cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF

chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4

參考:https://github.com/kubernetes/kubernetes/blob/master/pkg/proxy/ipvs/README.md

上面腳本創(chuàng)建了的/etc/sysconfig/modules/ipvs.modules文件,保證在節(jié)點(diǎn)重啟后能自動(dòng)加載所需模塊。 使用lsmod | grep -e ip_vs -e nf_conntrack_ipv4命令查看是否已經(jīng)正確加載所需的內(nèi)核模塊。

接下來(lái)還需要確保各個(gè)節(jié)點(diǎn)上已經(jīng)安裝了 ipset 軟件包。 為了便于查看 ipvs 的代理規(guī)則,最好安裝一下管理工具 ipvsadm。

yum install ipset ipvsadm

可以使用ipvsadm檢查是否開(kāi)啟ipvs,示例如下:

# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.0.0.1:443 rr persistent 10800
  -> 192.168.0.1:6443             Masq    1      1          0

如果以上前提條件如果不滿(mǎn)足,則即使 kube-proxy 的配置開(kāi)啟了 ipvs 模式,也會(huì)退回到 iptables 模式。

向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