構(gòu)建Kubernetes高可用集群

1. 統(tǒng)一環(huán)境配置(構(gòu)建Kubernetes基礎(chǔ)系統(tǒng)鏡像防止后面逐臺安裝)

此處為加固印象到逊,本人重新構(gòu)建球昨,技術(shù)嘛彻亲,多動手

  • 節(jié)點(diǎn)配置信息規(guī)劃
節(jié)點(diǎn) IP 系統(tǒng)配置信息 配置 磁盤
kubernetes-master-01 192.168.141.150 Master Ubuntu Server 18.04 2核2G 20G
kubernetes-master-02 192.168.141.151 Master Ubuntu Server 18.04 2核2G 20G
kubernetes-master-03 192.168.141.152 Master Ubuntu Server 18.04 2核2G 20G
kubernetes-node-01 192.168.141.160 Node Ubuntu Server 18.04 2核4G 20G
kubernetes-node-02 192.168.141.161 Node Ubuntu Server 18.04 2核4G 20G
kubernetes-node-03 192.168.141.162 Node Ubuntu Server 18.04 2核4G 20G

①. 操作系統(tǒng)的配置項(xiàng)

  • 關(guān)閉交換空間
    swapoff -a
  • 避免開機(jī)啟動交換空間
    vi /etc/fstab
    注釋 swap 開頭的行
  • 關(guān)閉防火墻
    ufw disable
  • 配置 DNS
    vi /etc/systemd/resolved.conf
    取消 DNS 行注釋堕担,并增加 DNS 配置如:114.114.114.114,修改后重啟下計(jì)算機(jī)
    reboot

②. 安裝 Docker
見之前博客:構(gòu)建kubernetes基礎(chǔ)系統(tǒng)鏡像-安裝Docker

③. 配置 Docker 加速器
見之前博客:構(gòu)建kubernetes基礎(chǔ)系統(tǒng)鏡像-安裝Docker(國內(nèi)鏡像加速器可能會很卡座掘,請?zhí)鎿Q成你自己阿里云鏡像加速器)

④. 安裝 kubeadm递惋,kubelet,kubectl
構(gòu)建kubernetes基礎(chǔ)系統(tǒng)鏡像-基于kubeadm安裝kubernetes環(huán)境

⑤. 同步時(shí)間

  • 設(shè)置時(shí)區(qū)
    dpkg-reconfigure tzdata
    選擇 Asia(亞洲)
    選擇 Shanghai(上海)
  • 時(shí)間同步
    • 安裝 ntpdate
      apt-get install ntpdate
    • 設(shè)置系統(tǒng)時(shí)間與網(wǎng)絡(luò)時(shí)間同步(cn.pool.ntp.org 位于中國的公共 NTP 服務(wù)器)
      ntpdate cn.pool.ntp.org
    • 將系統(tǒng)時(shí)間寫入硬件時(shí)間
      hwclock –systohc
  • 確認(rèn)時(shí)間
    date
    自行對照與系統(tǒng)時(shí)間是否一致

⑥. 配置 IPVS

  • 安裝系統(tǒng)工具
    apt-get install -y ipset ipvsadm
  • 配置并加載 IPVS 模塊
    mkdir -p /etc/sysconfig/modules/
    vim /etc/sysconfig/modules/ipvs.modules
  • 輸入如下內(nèi)容
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
  • 4.執(zhí)行腳本雹顺,注意:如果系統(tǒng)重啟則需要重新運(yùn)行該腳本
    chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
    設(shè)置腳本權(quán)限,執(zhí)行腳本廊遍,查看信息
    執(zhí)行腳本輸出如下:
    image.png

⑦. 配置內(nèi)核參數(shù)

  • 配置參數(shù)
    vim /etc/sysctl.d/k8s.conf
  • 輸入如下內(nèi)容
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_nonlocal_bind = 1
net.ipv4.ip_forward = 1
vm.swappiness=0
  • 應(yīng)用參數(shù)
    sysctl –system
  • 4.應(yīng)用參數(shù)輸出如下(找到 Applying /etc/sysctl.d/k8s.conf 開頭的日志)


    image.png

⑧. 修改 cloud.cfg
vim /etc/cloud/cloud.cfg
該配置默認(rèn)為 false嬉愧,修改為 true 即可

preserve_hostname: true

以上配置完成后作為Kubernetes基礎(chǔ)系統(tǒng)鏡像,以此為基礎(chǔ)復(fù)制其他集群


2. 單獨(dú)節(jié)點(diǎn)配置

為 Master 和 Node 節(jié)點(diǎn)單獨(dú)配置對應(yīng)的 IP 和 主機(jī)名

①. 配置 IP

  • 編輯配置文件
    vim /etc/netplan/50-cloud-init.yaml
    image.png
  • 配置生效
    netplan apply

②. 配置主機(jī)名

  • 修改主機(jī)名
    hostnamectl set-hostname kubernetes-master-01
  • 配置 hosts(命令)
cat >> /etc/hosts << EOF
> 192.168.2.150 kubernetes-master-01
> EOF

3. Master節(jié)點(diǎn)安裝 HAProxy + Keepalived

①. 創(chuàng)建 HAProxy 啟動腳本(kubernetes-master-01 執(zhí)行)
mkdir -p /usr/local/kubernetes/lb
vi /usr/local/kubernetes/lb/start-haproxy.sh

  • 輸入內(nèi)容如下
#!/bin/bash
# 修改為你自己的 Master 地址
MasterIP1=192.168.141.150
MasterIP2=192.168.141.151
MasterIP3=192.168.141.152
# 這是 kube-apiserver 默認(rèn)端口,不用修改
MasterPort=6443

# 容器將 HAProxy 的 6444 端口暴露出去
docker run -d --restart=always --name HAProxy-K8S -p 6444:6444 \
        -e MasterIP1=$MasterIP1 \
        -e MasterIP2=$MasterIP2 \
        -e MasterIP3=$MasterIP3 \
        -e MasterPort=$MasterPort \
        wise2c/haproxy-k8s
  • 設(shè)置權(quán)限
    chmod +x start-haproxy.sh

②. 創(chuàng)建 Keepalived 啟動腳本(kubernetes-master-01 執(zhí)行)
mkdir -p /usr/local/kubernetes/lb
vi /usr/local/kubernetes/lb/start-keepalived.sh

  • 輸入內(nèi)容如下
#!/bin/bash
# 修改為你自己的虛擬 IP 地址
VIRTUAL_IP=192.168.141.200
# 虛擬網(wǎng)卡設(shè)備名
INTERFACE=ens33
# 虛擬網(wǎng)卡的子網(wǎng)掩碼
NETMASK_BIT=24
# HAProxy 暴露端口喉前,內(nèi)部指向 kube-apiserver 的 6443 端口
CHECK_PORT=6444
# 路由標(biāo)識符
RID=10
# 虛擬路由標(biāo)識符
VRID=160
# IPV4 多播地址没酣,默認(rèn) 224.0.0.18
MCAST_GROUP=224.0.0.18

docker run -itd --restart=always --name=Keepalived-K8S \
        --net=host --cap-add=NET_ADMIN \
        -e VIRTUAL_IP=$VIRTUAL_IP \
        -e INTERFACE=$INTERFACE \
        -e CHECK_PORT=$CHECK_PORT \
        -e RID=$RID \
        -e VRID=$VRID \
        -e NETMASK_BIT=$NETMASK_BIT \
        -e MCAST_GROUP=$MCAST_GROUP \
        wise2c/keepalived-k8s

VIRTUAL_IP:可為自定義網(wǎng)段的任意ip,未被占用即可卵迂,此處ip指代下文中的VIP

  • 設(shè)置權(quán)限
    chmod +x start-keepalived.sh

③. 復(fù)制腳本到其它 Master 地址

  • 分別在 kubernetes-master-02 和 kubernetes-master-03 執(zhí)行創(chuàng)建工作目錄命令
    mkdir -p /usr/local/kubernetes/lb
  • 將 kubernetes-master-01 中的腳本拷貝至其它 Master
    scp start-haproxy.sh start-keepalived.sh 192.168.2.151:/usr/local/kubernetes/lb
    scp start-haproxy.sh start-keepalived.sh 192.168.2.152:/usr/local/kubernetes/lb
    image.png

    如上輸入yes,并輸入對應(yīng)服務(wù)器的密碼
  • 分別在 3 個(gè) Master 中啟動容器(執(zhí)行腳本)
    sh /usr/local/kubernetes/lb/start-haproxy.sh && sh /usr/local/kubernetes/lb/start-keepalived.sh
  • 查看容器運(yùn)行情況和網(wǎng)卡綁定的虛擬 IP
    image.png

    image.png

    特別注意:Keepalived 會對 HAProxy 監(jiān)聽的 6444 端口進(jìn)行檢測裕便,如果檢測失敗即認(rèn)定本機(jī) HAProxy 進(jìn)程異常,會將 VIP 漂移到其他節(jié)點(diǎn)见咒,所以無論本機(jī) Keepalived 容器異吵ニィ或 HAProxy 容器異常都會導(dǎo)致 VIP 漂移到其他節(jié)點(diǎn)

4. 部署 Kubernetes 集群

初始化 Master
①. 創(chuàng)建工作目錄
mkdir -p /usr/local/kubernetes/cluster
導(dǎo)出配置文件到工作目錄
kubeadm config print init-defaults --kubeconfig ClusterConfiguration > kubeadm.yml
②. 修改配置文件,如圖:

image.png

在1.19版本之前,kubeadm部署方式啟用ipvs模式時(shí),初始化配置文件需要添加以下內(nèi)容:
image.png

之后如下:
image.png

見配置項(xiàng):https://kubernetes.io/docs/reference/config-api/kube-proxy-config.v1alpha1/
③. kubeadm 初始化
kubeadm init --config=kubeadm.yml --upload-certs | tee kubeadm-init.log
image.png

配置 kubectl
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
驗(yàn)證是否成功
kubectl get node
image.png

④. 安裝網(wǎng)絡(luò)插件
參考官方文檔安裝:https://docs.projectcalico.org/getting-started/kubernetes/quickstart
下載文件,方便更改
wget https://docs.projectcalico.org/v3.19/manifests/calico.yaml
更改默認(rèn)的網(wǎng)段,前面有說明
vim calico.yaml
將 192.168.0.0/16 修改為 10.244.0.0/16
命令快速查找
顯示行號::set number
查找字符:/要查找的字符下翎,輸入小寫 n 下一個(gè)匹配項(xiàng)缤言,輸入大寫 N 上一個(gè)匹配項(xiàng)
安裝(Master 節(jié)點(diǎn)操作)
kubectl apply -f calico.yaml
image.png

確認(rèn)安裝是否成功
watch kubectl get pods --all-namespaces
需要等待所有狀態(tài)為 Running,注意時(shí)間可能較久视事,3 - 5 分鐘的樣子
⑤. 加入master節(jié)點(diǎn)

  • 查看kubeadm-init.log文件,獲取join操作命令
    cat /usr/local/kubernetes/cluster/kubeadm-init.log
  • kubernetes-master-02和kubernetes-master-03分別執(zhí)行


    image.png

    ⑥. 6.加入node節(jié)點(diǎn)
    kubernetes-node-01胆萧,kubernetes-node-02,kubernetes-node-03分別執(zhí)行


    image.png

根據(jù)次版本核配置俐东,本人已搭建集群與高可用集群環(huán)境跌穗,如遇到相關(guān)問題,未在文章中說明虏辫,可聯(lián)系本人
謝謝大家關(guān)注蚌吸,點(diǎn)個(gè)贊唄~
如需轉(zhuǎn)載請標(biāo)明出處,謝謝~~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末乒裆,一起剝皮案震驚了整個(gè)濱河市套利,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌鹤耍,老刑警劉巖肉迫,帶你破解...
    沈念sama閱讀 222,681評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異稿黄,居然都是意外死亡喊衫,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評論 3 399
  • 文/潘曉璐 我一進(jìn)店門杆怕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來族购,“玉大人,你說我怎么就攤上這事陵珍∏拚龋” “怎么了?”我有些...
    開封第一講書人閱讀 169,421評論 0 362
  • 文/不壞的土叔 我叫張陵互纯,是天一觀的道長瑟幕。 經(jīng)常有香客問我,道長留潦,這世上最難降的妖魔是什么只盹? 我笑而不...
    開封第一講書人閱讀 60,114評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮兔院,結(jié)果婚禮上殖卑,老公的妹妹穿的比我還像新娘。我一直安慰自己坊萝,他們只是感情好孵稽,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,116評論 6 398
  • 文/花漫 我一把揭開白布许起。 她就那樣靜靜地躺著,像睡著了一般肛冶。 火紅的嫁衣襯著肌膚如雪街氢。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,713評論 1 312
  • 那天睦袖,我揣著相機(jī)與錄音珊肃,去河邊找鬼。 笑死馅笙,一個(gè)胖子當(dāng)著我的面吹牛伦乔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播董习,決...
    沈念sama閱讀 41,170評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼烈和,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了皿淋?” 一聲冷哼從身側(cè)響起招刹,我...
    開封第一講書人閱讀 40,116評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎窝趣,沒想到半個(gè)月后疯暑,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,651評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡哑舒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,714評論 3 342
  • 正文 我和宋清朗相戀三年妇拯,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片洗鸵。...
    茶點(diǎn)故事閱讀 40,865評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡越锈,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出膘滨,到底是詐尸還是另有隱情甘凭,我是刑警寧澤,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布火邓,位于F島的核電站丹弱,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏贡翘。R本人自食惡果不足惜蹈矮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,211評論 3 336
  • 文/蒙蒙 一砰逻、第九天 我趴在偏房一處隱蔽的房頂上張望鸣驱。 院中可真熱鬧,春花似錦蝠咆、人聲如沸踊东。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽闸翅。三九已至再芋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間坚冀,已是汗流浹背济赎。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留记某,地道東北人司训。 一個(gè)月前我還...
    沈念sama閱讀 49,299評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像液南,于是被迫代替她去往敵國和親壳猜。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,870評論 2 361

推薦閱讀更多精彩內(nèi)容