Centos8 部署高可用K8S

機器準備

系統(tǒng)初始配置

添加國內(nèi)鏡像源

軟件安裝、配置

使用kubeadm部署kubernetes

安裝flannel網(wǎng)絡(luò)

一、機器準備

本次試驗準備的機器如下,需要注意的是k8s 要求 CPU 最低為 2 核,否則部署過程過程中會報錯,雖然可以使用"–ignore-preflight-errors=…"參數(shù)忽視,但是這里不建議使用低于2CPU的配置部署k8s


二、系統(tǒng)初始配置

1、關(guān)閉swap:

kubernetes的想法是將實例緊密包裝到盡可能接近100%。 所有的部署應(yīng)該與CPU /內(nèi)存限制固定在一起。 所以如果調(diào)度程序發(fā)送一個pod到一臺機器,它不應(yīng)該使用交換。 設(shè)計者不想交換,因為它會減慢速度,所以關(guān)閉swap主要是為了性能考慮,當然為了一些節(jié)省資源的場景,比如運行容器數(shù)量較多,可添加kubelet參數(shù) --fail-swap-on=false來解決。

swapoff -a

sed-ri's/.*swap.*/#&/'/etc/fstab

2、關(guān)閉所有防火墻

systemctl stop firewalld

systemctl disable firewalld

3、禁用SELINUX

setenforce 0

sed-i's/SELINUX=enforcing/SELINUX=disabled/g'/etc/selinux/config


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

cat>/etc/sysctl.d/k8s.conf<<EOF

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

EOF

sysctl --system


5、kube-proxy開啟ipvs的前置配置

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


三、添加國內(nèi)鏡像源


1、添加centos8鏡像源

curl http://mirrors.aliyun.com/repo/Centos-8.repo>/etc/yum.repos.d/Centos-8.repo


2、添加k8s源

cat <<EOF > /etc/yum.repos.d/kubernetes.repo[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


3、添加ocker-ce源

curl https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo > /etc/yum.repos.d/docker-ce.repo

sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo

四、軟件安裝、配置

1、升級containerd

cd /opt

wget https://download.docker.com/linux/centos/7/x86_64/edge/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm

yum localinstall? containerd.io-1.2.6-3.3.el7.x86_64.rpm

1、軟件安裝(其中keepalived、haproxy的安裝配置只需要在三臺master節(jié)點上操作)

yum install keepalived haproxy -y

yum install ipset ipvsadm -y

yum install yum-utils device-mapper-persistent-data lvm2 -y

yum install container-selinux -y

yum install docker-ce -y

yum install kubelet kubeadm kubectl -y


2、配置keepalived(三臺master節(jié)點操作)

1)配置keepalived

vim /etc/keepalived/keepalived.conf

清空內(nèi)容后將如下內(nèi)容填寫到配置文件

! Configuration File for keepalived

global_defs {

? notification_email {

? ? root@localhost

? }

? notification_email_from root@k8s.com

? smtp_server 127.0.0.1

? smtp_connect_timeout 30

? router_id keepalived_lvs1

}

vrrp_instance VI_1 {

? ? state MASTER

? ? interface ens35

? ? virtual_router_id 55

? ? priority 100

? ? advert_int 1

? ? authentication {

? ? ? ? auth_type PASS

? ? ? ? auth_pass Kubernetes

? ? }

? ? virtual_ipaddress {

? ? ? ? 10.255.253.88

? ? }

}

注意:

修改interface ens35中的ens35改為服務(wù)模塊節(jié)點實際的網(wǎng)卡名

Master01、Master02、Master03三個節(jié)點的router_id分別改為router_id keepalived_lvs1、router_id keepalived_lvs2、router_id keepalived_lvs3

Master01、Master02、Master03三個節(jié)點中的state分別修改為state MASTER、state BACKUP、state BACKUP

Master01、Master02、Master03三個節(jié)點中的priority 值分別設(shè)置為設(shè)置為100、99、98

將10.255.253.88修改為實際使用的vip

2)啟動服務(wù)

systemctl start keepalived && systemctl enable keepalived && systemctl status keepalived


2、配置haproxy(三臺master節(jié)點操作)

1)配置haproxy

vim /etc/haproxy/haproxy.cfg

清空內(nèi)容后將如下內(nèi)容填寫到配置文件

global

? #設(shè)置日志

? ? log 127.0.0.1 local7 info

? ? #用戶與用戶組

? ? user root

? ? group root

? ? #守護進程啟動

? ? daemon

? ? #最大連接數(shù)

? ? maxconn 4000

#默認配置

defaults

? ? log global

? ? mode http

? ? option httplog

? ? option dontlognull

? ? timeout connect 5000

? ? timeout client 50000

? ? timeout server 50000

listen stats

? ? bind 0.0.0.0:1080

? ? stats enable

? ? stats uri /haproxyadmin

? ? stats auth admin:admin

? ? stats admin if TRUE

frontend localnodes

? ? bind *:6444

? ? mode tcp

? ? option tcplog

? ? default_backend kube_apiserver

? ? timeout client? 1m

backend kube_apiserver

? ? mode tcp

? ? balance roundrobin

? ? option tcp-check

? ? server server1 10.255.253.40:6443 check port 6443 inter 2000 rise 3 fall 3 weight 30

? ? server server2 10.255.253.41:6443 check port 6443 inter 2000 rise 3 fall 3 weight 30

? ? server server3 10.255.253.42:6443 check port 6443 inter 2000 rise 3 fall 3 weight 30


注意:

將10.255.253.40、10.255.253.41、10.255.253.42修改為實際ip地址

2)啟動服務(wù)

systemctl enable haproxy && systemctl start haproxy && systemctl status haproxy


3、配置docker(所有節(jié)點操作)

1)修改docker 的Cgroup Driver為systemd

修改或創(chuàng)建/etc/docker/daemon.json,加入下面的內(nèi)容:

{

"exec-opts":["native.cgroupdriver=systemd"]

}


2)啟動docker、設(shè)置kubelet開機自啟(這里先不要開啟kubelet服務(wù))

systemctl enable docker&& systemctl start docker && systemctl enable kubelet


五、使用kubeadm部署kubernetes

1、打印kubeadm的配置文件(master01節(jié)點操作)

kubeadm config print init-defaults>kubeadm-config.yml


2、編輯kubeadm-config.yml文件(master01節(jié)點操作)

vim kubeadm-config.yml

將advertiseAddress選項中的ip地址改為Master01的地址


添加controlPlaneEndpoint配置,其中ip地址為 vip,端口為haproxy映射6443的前端端口6444


添加podSubnet選項,如果使用flannel網(wǎng)絡(luò),則該處為podSubnet: 10.244.0.0/16


將容器鏡像倉庫改為阿里倉庫

imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers


將kubeproxy的mode改為ipvs

添加以下內(nèi)容

---

apiVersion: kubeproxy.config.k8s.io/v1alpha1

kind: KubeProxyConfiguration

mode: ipvs


3、初始化master01節(jié)點

kubeadm init --config=kubeadm-config.yml --upload-certs


4、等master01節(jié)點初始化完成后逐個將Master02、Master03、Node01、Node02加入集群

Master01初始化完成后會出現(xiàn)如下字段、Master02、Master03上執(zhí)行上面的kubeadm join命令加入集群,Node01、Node02節(jié)點使用下面的kubeadm join命令加入集群


5、配置kubctl

mkdir -p $HOME/.kube && sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config && sudo chown $(id -u):$(id -g) $HOME/.kube/config


五、安裝flannel網(wǎng)絡(luò)

1、獲取flannel網(wǎng)絡(luò)的yaml文件

wget? https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml



2、部署flannel網(wǎng)絡(luò)

kubectl apply -f kube-flannel.yml


4、等待一段時間后,查看所有pod的狀態(tài)為Running、所有節(jié)點的狀態(tài)是Ready,則集群正常

kubectl get pods -n kube-system

5、鏡像拉取失敗

查看失敗節(jié)點信息

kubectl describe pod kube-flannel-ds-h75b4 -n kube-system


進入Node01手動下載

docker pull quay.io/coreos/flannel:v0.13.1-rc1




kubectl get nodes


至此,高可用架構(gòu)的Kubernetes集群搭建完成。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容