一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

k8s高可用集群搭建部署...

 無人在線biblge 2022-07-27 發(fā)布于江蘇

簡介

k8s普通搭建出來只是單master節(jié)點,如果該節(jié)點掛掉,則整個集群都無法調(diào)度,K8s高可用集群是用多個master節(jié)點加負(fù)載均衡節(jié)點組成,外層再接高可用分布式存儲集群例如ceph集群,實現(xiàn)計算能力+存儲能力的高可用,同時,etcd也可以獨立出來用外部的etcd集群

架構(gòu)詳解

高可用架構(gòu)圖

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-WBwrIhIh-1646290414086)(RackMultipart20220303-4-1aeg5pm_html_80f5e022fe130409.png)]

架構(gòu)詳解

  • 訪問鏈路步驟:外部域名訪問 ——> node集群負(fù)載均衡 ——>ingress ——> node集群 ——> serivce ——> pod
  • 內(nèi)部元數(shù)據(jù)存儲步驟:master集群 or node集群 ——> etcd集群
  • 內(nèi)部使用存儲節(jié)點步驟:master集群 or node集群 ——> 高可用分布式存儲集群
  • k8s的多臺master集群被負(fù)載均衡做4層代理,做到了高可用,訪問時只通過負(fù)載均衡訪問
  • K8s的node節(jié)點接入master時通過master的負(fù)載均衡接入,就算掛掉一個master也無感知
  • K8s的node節(jié)點被外層負(fù)載均衡代理,pod啟動后被service代理,service上的端口被ingress代理轉(zhuǎn)發(fā)再到外層負(fù)載均衡,外部通過域名訪問
  • K8s集群的重要元數(shù)據(jù)存儲到外部etcd集群上,保障高可用和強(qiáng)一致性(這里我沒使用外部)
  • K8s集群的pod使用存儲直接使用外部高可用分布式存儲集群例如ceph集群,保障性能和可用性
  • 總結(jié):k8s的master節(jié)點使用負(fù)載均衡做統(tǒng)一入口實現(xiàn)高可用,node節(jié)點同樣通過統(tǒng)一入口實現(xiàn)高可用負(fù)載均衡,并接入master的統(tǒng)一入口形成整個集群的高可用。這里k8s只能調(diào)度計算資源給pod,比如cpu,內(nèi)存等,但是對于pod來說可靠的存儲也是非常重要的,這時候就要使用外部高可用分布式存儲集群接入k8s來提供穩(wěn)定的存儲

高可用集群搭建

前提要求

  • 3臺以上機(jī)器,操作系統(tǒng) CentOS7.7以上64位系統(tǒng)
  • 硬件配置:2GB或更多RAM,2個CPU或更多CPU,硬盤30GB或更多
  • 集群中所有機(jī)器之間網(wǎng)絡(luò)互通
  • 可以訪問外網(wǎng),需要拉取鏡像
  • 禁止swap分區(qū)

軟件詳情

  • Kubernetes 1.16.2
  • calico 3.9
  • Docker 18.09.7
  • Nginx 1.6
  • Keepalived 1.3.5

機(jī)器詳情

Master節(jié)點3

10.0.1.173 10.0.1.174 10.0.1.175

worker節(jié)點3

10.0.1.176 10.0.1.177 10.0.1.178

Master負(fù)載均衡節(jié)點 2

10.0.1.179 10.0.1.180 vip: 10.0.1.200

搭建步驟

高可用負(fù)載均衡創(chuàng)建四層負(fù)載

nginx搭建(搭建略,179,180機(jī)器都需安裝配置)

k8s_server.conf文件內(nèi)容如下,代理master的6443端口,創(chuàng)建并加入到nginx配置文件中

stream {
        upstream k8sapi {
            server 10.0.1.173:6443;
            server 10.0.1.174:6443;
            server 10.0.1.175:6443;
        }
        
        server {
            listen 6443;
            proxy_pass k8sapi;
        }
}

啟動nginx監(jiān)聽端口

keepalived搭建

179,180機(jī)器執(zhí)行命令安裝:

yum install -y keepalived

179,180機(jī)器創(chuàng)建腳本文件并編輯內(nèi)容 vim /tmp/check_k8s.sh

#!/bin/bash
# 判斷nginx是否存活,如果非存活狀態(tài)則停止keepalived使vip綁定到180
nginx_nums=`ps -ef |grep 'nginx: master'|grep -v grep|wc -l`
if [ $nginx_nums == 0  ]
then
     echo 'nginx is down'
     /etc/init.d/keepalived stop
else
    echo 'nginx is running'
fi

179機(jī)器 vim /etc/keepalived/keepalived.conf 編輯配置文件,修改成如下內(nèi)容

! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   #vrrp_strict  # 注釋掉為單播模式
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_script check_web {
   script "/tmp/check_k8s.sh"          #表示將一個腳本信息賦值給變量check_web
   interval 2                                     #執(zhí)行監(jiān)控腳本的間隔時間
   # weight 2                                       #利用權(quán)重值和優(yōu)先級進(jìn)行運算,從而降低主服務(wù)優(yōu)先級使之變?yōu)閭浞?wù)器(建議先忽略)
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0                 # 內(nèi)網(wǎng)網(wǎng)卡名,如果是ens33則改為ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    nopreempt  # 非搶占模式
    unicast_src_ip 10.0.1.179    # 單播的源地址,填本機(jī)地址
    unicast_peer {
       10.0.1.180             #集群其他機(jī)器地址,有多個地址則全寫上
    }
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.0.1.200
    }
    track_script {
        check_k8s
   } 
}

179機(jī)器 vim /etc/keepalived/keepalived.conf 編輯配置文件,修改成如下內(nèi)容

! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   # vrrp_strict  # 注釋掉為單播模式
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_script check_web {
   script "/data/scripts/check_ngx.sh"          #表示將一個腳本信息賦值給變量check_web
   interval 2                                     #執(zhí)行監(jiān)控腳本的間隔時間
   weight 2                                       #利用權(quán)重值和優(yōu)先級進(jìn)行運算,從而降低主服務(wù)優(yōu)先級使之變?yōu)閭浞?wù)器(建議先忽略)
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0                 # 內(nèi)網(wǎng)網(wǎng)卡名,如果是ens33則改為ens33
    virtual_router_id 51
    priority 90
    nopreempt  # 非搶占模式,主機(jī)上線后不會搶占為主
    unicast_src_ip 10.0.1.180    # 單播的源地址,填本機(jī)地址
    unicast_peer {
       10.0.1.179             #集群其他機(jī)器地址,有多個地址則全寫上
    }
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.0.1.200
    }
    track_script {
        check_web
   }
}

179,180機(jī)器啟動keepalived

systemctl start keepalived

k8s基礎(chǔ)環(huán)境安裝配置:

環(huán)境準(zhǔn)備
三臺主機(jī)都需要執(zhí)行如下命令

關(guān)閉防火墻和selinux

systemctl stop firewalld

systemctl disable firewalld

sed -i 's/enforcing/disabled/' /etc/selinux/config

setenforce 0

關(guān)閉swap分區(qū)

swapoff -a    # 臨時關(guān)閉

vim /etc/fstab # 注釋到swap那一行  永久關(guān)閉

添加主機(jī)名與IP對應(yīng)關(guān)系

cat >> /etc/hosts << EOF
10.0.1.173  k8s-master-173
10.0.1.174  k8s-master-174
10.0.1.175  k8s-master-175
10.0.1.176  k8s-node-176
10.0.1.177  k8s-node-177
10.0.1.178  k8s-node-178
10.0.1.200  api.k8s.com    # 這里第一個初始化的master(我這里是173)節(jié)點要設(shè)置成 127.0.0.1  api.k8s.com
EOF

各自修改主機(jī)名(從173-178各自順序執(zhí)行)

hostnamectl set-hostname k8s-master-173
hostnamectl set-hostname k8s-master-174
hostnamectl set-hostname k8s-master-175

hostnamectl set-hostname k8s-node-176
hostnamectl set-hostname k8s-node-177
hostnamectl set-hostname k8s-node-178

將橋接的IPv4流量傳遞到iptables的鏈

cat > /etc/sysctl.d/k8s.conf << EOF
net.ipv4.ip_forward = 1
net.ipv4.tcp_tw_recycle = 0
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

sysctl --system
內(nèi)核升級

所有集群節(jié)點內(nèi)核升級到最新的lt 內(nèi)核升級參考 linux(centos7)內(nèi)核升級

docker安裝

所有集群節(jié)點安裝docker

參考docker安裝使用文檔進(jìn)行安裝:docker部署搭建 (注意:這里docker可以先安裝18.09版本,yum install -y docker-ce-18.09 docker-ce-cli-18.09 containerd.io,后續(xù)有問題再升級到19.03.9版本,防止集成到k8s出現(xiàn)bug,這里我出現(xiàn)過k8s監(jiān)控服務(wù)無法獲取資源信息)

Docker配置修改,設(shè)置cgroup驅(qū)動,這里用systemd

vim /etc/docker/daemon.json

{
  "graph": "/data/docker",
  "registry-mirrors": ["https://01xxgaft.mirror."],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}

重啟docker

systemctl restart docker
安裝kubeadm,kubelet和kubectl

添加k8s阿里云YUM軟件源

所有集群節(jié)點執(zhí)行

cat > /etc/yum.repos.d/kubernetes.repo << EOF[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF[kubernetes]

安裝

yum install -y kubelet-1.16.2 kubeadm-1.16.2 kubectl-1.16.2
初始化集群

在第一個master節(jié)點也就是173上執(zhí)行,因為是第一個初始化節(jié)點hosts要設(shè)置成 127.0.0.1 api.k8s.com

注意,這里–control-plane-endpoint后面的地址和上面添加hosts到vip200的地址對應(yīng),填那個域名 我這里是api.k8s.com

kubeadm init   --control-plane-endpoint "api.k8s.com:6443" --image-repository registry./google_containers   --kubernetes-version v1.16.0   --service-cidr=10.140.0.0/16 --pod-network-cidr=10.240.0.0/16
獲取執(zhí)行結(jié)果

這里執(zhí)行結(jié)果中,第一條 kubeadm join apiserver.k8s:6443 --token一共有三行的,就是初始化其他master節(jié)點的命令,先記住

第二條 kubeadm join apiserver.k8s:6443 --token一共有二行的,就是初始化其他worker節(jié)點的命令,先記住

初始化另外兩個master節(jié)點

這里再執(zhí)行上面三行初始化master的kubeadm join xxx 命令(我這里只是示例,命令根據(jù)你實際生成的復(fù)制去node節(jié)點執(zhí)行)

kubeadm join api.k8s.com:6443 --token wjpzm3.1c8vmw9ivkm8bjdr     --discovery-token-ca-cert-hash sha256:7c95e8387e00fe1babb1456239571505abea100e99b4472b2bc63730826989aa     --control-plane --certificate-key 0ee85dd36c3630729b5ec8f187335f8f0a9af9b09441f75e28767d9440cd7124

初始化三個node節(jié)點

這里再執(zhí)行上面兩行初始化worker的kubeadm join xxx 命令(我這里只是示例,命令根據(jù)你實際生成的復(fù)制去node節(jié)點執(zhí)行)

kubeadm join api.k8s.com:6443 --token wjpzm3.1c8vmw9ivkm8bjdr     --discovery-token-ca-cert-hash sha256:7c95e8387e00fe1babb1456239571505abea100e99b4472b2bc63730826989aa

安裝cni網(wǎng)絡(luò)插件(calico)

下載yaml文件

wget https://github.com/xuwei777/xw_yaml/blob/main/calico-3.9.2.yaml

修改配置文件的網(wǎng)段為上面init pod-network-cidr的網(wǎng)段地址(必須正確否則會導(dǎo)致集群網(wǎng)絡(luò)問題)

sed -i 's/192.168.0.0/10.240.0.0/g' calico-3.9.2.yaml

安裝插件

kubectl apply -f calico-3.9.2.yaml

kubectl get pod --all-namespaces -o wide

搭建完成,查看集群內(nèi)節(jié)點是否就緒

kubectl get node -o wide

測試kubernetes集群

在Kubernetes集群中創(chuàng)建一個pod,驗證是否正常運行

創(chuàng)建一個pod,開放對外端口訪問,這里會隨機(jī)映射一個端口

kubectl create deployment nginx --image=nginx

kubectl expose deployment nginx --port=80 --type=NodePort

查看pod狀態(tài),必須是running狀態(tài)而且ready是1,并查看nginx svc的80端口映射到了哪個端口

kubectl get pod,svc

訪問任意機(jī)器的剛剛查看的映射端口,看看是否nginx已經(jīng)運行

擴(kuò)展學(xué)習(xí)

點是否就緒**

kubectl get node -o wide

測試kubernetes集群

在Kubernetes集群中創(chuàng)建一個pod,驗證是否正常運行

創(chuàng)建一個pod,開放對外端口訪問,這里會隨機(jī)映射一個端口

kubectl create deployment nginx --image=nginx

kubectl expose deployment nginx --port=80 --type=NodePort

查看pod狀態(tài),必須是running狀態(tài)而且ready是1,并查看nginx svc的80端口映射到了哪個端口

kubectl get pod,svc

訪問任意機(jī)器的剛剛查看的映射端口,看看是否nginx已經(jīng)運行

擴(kuò)展學(xué)習(xí)

集群的ingress,接入分布式存儲集群,yaml配置文件?后續(xù)文章詳細(xì)講解

如果覺得該文章對你有幫助的話請給我點個??吧,感謝

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    中文字幕一区二区久久综合| 婷婷色香五月综合激激情| 国产日韩欧美综合视频| 成年女人午夜在线视频| 好吊色欧美一区二区三区顽频| 亚洲一区二区三区在线免费| 91欧美激情在线视频| 精品国产日韩一区三区| 日本午夜福利视频免费观看| 亚洲国产四季欧美一区| 久久99亚洲小姐精品综合| 不卡在线播放一区二区三区| 国产一区二区三区免费福利| 日本不卡一本二本三区| 蜜臀人妻一区二区三区| 91久久精品国产成人| 亚洲中文字幕视频在线播放 | 黄男女激情一区二区三区| 在线观看视频成人午夜| 亚洲免费视频中文字幕在线观看| 亚洲三级视频在线观看免费| 久久国内午夜福利直播| 精品国产成人av一区二区三区| 九九热这里只有精品视频| 欧美日韩国产福利在线观看| 高潮少妇高潮久久精品99| 日本和亚洲的香蕉视频| 一区二区三区日韩在线| 欧美黑人黄色一区二区| 亚洲精品中文字幕一二三| 国产精品久久熟女吞精| 精品欧美在线观看国产| 国产又爽又猛又粗又色对黄| 久久亚洲国产视频三级黄| 日本一二三区不卡免费| 精品国产91亚洲一区二区三区| 国产欧美一区二区久久| 午夜精品久久久免费视频| 欧美区一区二区在线观看| 黑丝国产精品一区二区| 在线日韩欧美国产自拍|