一、kubeadm 部署 k8s1.27.4

一、服務(wù)器分布

二、關(guān)閉防火墻

三、關(guān)閉selinux

四、關(guān)閉swap

五、設(shè)置主機(jī)名

六、在master上添加hosts

七、將橋接的ipv4流量傳遞到iptables的連接

八、時(shí)間同步

九、安裝docker(所有節(jié)點(diǎn))

十、安裝cri-dockerd?(所有節(jié)點(diǎn))

十一、安裝kubeadm、kubelet和kubectl(所有節(jié)點(diǎn))

十二、部署kubernetes Master

十三、kubeadm?init做了那些事

十四、加入kubernetes node<node上執(zhí)行>

十五、部署容器網(wǎng)絡(luò)(CNI)


一、服務(wù)器分布

主機(jī)名Ip配置角色

hs-tmp-153????????192.168.2.153????????8核8G 100G????????dev-k8s-master

hs-app-552????????192.168.2.63? ? ? ? ? ?8核8G 150G????????dev-k8s-node1

hs-develop-560????192.168.2.60????????4核16G100G????????dev-k8s-node2

二、關(guān)閉防火墻

# systemctl stop firewalld

# systemctl disable firewalld

# iptables –vnL

# iptables -F&&iptables -t nat -F&& iptables -t mangle -F && iptables -X

三、關(guān)閉selinux

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

# setenforce 0

四、關(guān)閉swap

# swapoff -a

# tail -1 /etc/fstab

#/dev/mapper/centos-swap swap??????????????????? swap??? defaults??????? 0 0? ? 此行注釋掉

五、設(shè)置主機(jī)名

# hostnamectl set-hostname

六、在master上添加hosts

# cat >> /etc/hosts <<EOF

> 192.168.2.153 hs-tmp-153

> 192.168.2.63 hs-app-552

> 192.168.2.60 hs-develop-560

>EOF

七、將橋接的ipv4流量傳遞到iptables的連接

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

net.ipv4.ip_forward = 1

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

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

EOF

# sysctl? --system

八、時(shí)間同步

# yum search chrony


# egrep -v "^$|^#"/etc/chrony.conf

server ntp.aliyun.com iburst

driftfile /var/lib/chrony/drift

makestep 1.0 3

rtcsync

logdir /var/log/chrony


#systemctl start chronyd

#systemctl enable chronyd

#systemctl restart chronyd

# chronyc sources -v

九、安裝docker(所有節(jié)點(diǎn))

#yum update

#wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

-O /etc/yum.repos.d/docker-ce.repo

#yum -y install docker-ce

配置鏡像加速器:

#cat /etc/docker/daemon.json

{

? "registry-mirrors":["https://6kx4zyno.mirror.aliyuncs.com"],

? "insecure-registries":["192.168.2.51"]

}

# systemctl restart docker.service

十、安裝cri-dockerd(所有節(jié)點(diǎn))

下載:

https://objects.githubusercontent.com/github-production-release-asset-2e65be/318491505/1b428949-77b9-4046-a78e-239f447de788?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20230810%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20230810T002239Z&X-Amz-Expires=300&X-Amz-Signature=6f130777ffa1d7e444c9d0395cf06cb2cc78605fadd3414dfb50869bca135845&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=318491505&response-content-disposition=attachment%3B%20filename%3Dcri-dockerd-0.3.4-3.el7.x86_64.rpm&response-content-type=application%2Foctet-stream

https://github.com/Mirantis/cri-dockerd/releases/tag/v0.3.4

# yum localinstall /tmp/cri-dockerd-0.3.4-3.el7.x86_64.rpm

修改文件

## vi /usr/lib/systemd/system/cri-docker.service? 增加下面內(nèi)容

ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9 --cni-bin-dir=/opt/cni/bin --cni-cache-dir=/var/lib/cni/cache --cni-conf-dir=/etc/cni/net.d

# systemctl daemon-reload

# systemctl restart cri-docker

十一、安裝kubeadm、kubelet和kubectl(所有節(jié)點(diǎn))

添加阿里云yum軟件源

#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.gpghttps://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

EOF

#yum -y install kubelet kubeadm kubectl

#systemctl enable kubelet

注:切記不要啟動(dòng)服務(wù)

十二、部署kubernetes Master

192.168.2.153<master>執(zhí)行

#kubeadm init \

--kubernetes-version=v1.27.4 \

--apiserver-advertise-address=192.168.2.153 \

--image-repository registry.aliyuncs.com/google_containers \

--service-cidr=10.96.0.0/12 \

--pod-network-cidr=10.244.0.0/16 \

--cri-socket unix:///var/run/cri-dockerd.sock \

--ignore-preflight-errors=all


v1.25

注解:

--apiserver-advertise-address=集群通告地址

--image-repository由于默認(rèn)拉去鏡像地址空間k8s.gcr.io國內(nèi)無法訪問,這里指定阿里云鏡像倉庫地址

--kubernetes-version

k8s版本,與安裝的一直

--service-cidr集群內(nèi)部虛擬網(wǎng)絡(luò),Pod統(tǒng)一訪問入口

--pod-network-cidr

pod網(wǎng)絡(luò),與下面部署的CNI網(wǎng)絡(luò)組件yaml中保持一致

也可使用配置文件引導(dǎo):


出現(xiàn)下圖,安裝完成:


拷貝kubectl使用的連接k8s認(rèn)證文件到默認(rèn)路徑:

#? mkdir -p $HOME/.kube

#?? sudo cp -i /etc/kubernetes/admin.conf$HOME/.kube/config

#?? sudo chown $(id -u):$(id -g)$HOME/.kube/config

#kubectl get node

NAME???????? STATUS???? ROLES?????????? AGE??? VERSION

hs-tmp-153?? NotReady??control-plane?? 155m?? v1.27.4

十三、kubeadm?init做了那些事

1. [preflight] 環(huán)境檢查和拉取鏡像

2.[certs] 生成證書文件,存放目錄:/etc/kubernetes/pki

3.[kubeconfig] 生成kubeconfig連接k8s配置文件,存放目錄:controller-manager.conf

4.[kubelet-start] 生成kubelet配置文件并啟動(dòng)

5.[control-plane] 已靜態(tài)pod方式啟動(dòng)master組建

6.存放master組件配置文件/etc/kubernetes/manifests,存儲(chǔ)配置到k8s configmap中

7.[mark-control-plane] 給master節(jié)點(diǎn)配置role和添加污點(diǎn)(沒有聲明的情況下,不允許pod分配過來)

8.[bootstrap-token] 為kubelet自動(dòng)生成證書的一系列配置

9.[addons] 安裝插件,coreDNS和kube-proxy

10.讓你拷貝kubectl所使用的連接k8s的配置文件到默認(rèn)路徑

mkdir -p$HOME/.kube

sudo cp -i/etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id-u):$(id -g) $HOME/.kube/config

生成一個(gè)node加入集群的命令:

kubeadmjoin 192.168.2.153:6443 --token r24dse.o8bispnfb34cuwly \

???????? --discovery-token-ca-cert-hash

十四、加入kubernetes node<node上執(zhí)行>

#kubeadm join 192.168.2.153:6443 --token r24dse.o8bispnfb34cuwly--discovery-token-ca-cert-hashsha256:4b5ab79c068aabb8ed9c3dda021f1afb28dc4f6126149bd4057928a9cac6ba8a --cri-socket unix:///var/run/cri-dockerd.sock


#kubectl get node<master上執(zhí)行>

NAME???????????? STATUS???? ROLES?????????? AGE???? VERSION

hs-app-552?????? NotReady?? ????????? 3m41s?? v1.27.4

hs-develop-560?? NotReady??????????? 49s???? v1.27.4

hs-tmp-153?????? NotReady?? control-plane?? 163m???v1.27.4

注:

NotReady: 因?yàn)榫W(wǎng)絡(luò)沒有準(zhǔn)備就緒,可以通過journalctl –u kubelet> a.log文件中查看

默認(rèn)token有效期為24小時(shí),當(dāng)過期之后,改token就不可用了。這時(shí)就需要重新創(chuàng)建token,可以之間使用命令快捷生成:

# kubeadm token create--print-join-command

十五、部署容器網(wǎng)絡(luò)(CNI)

https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#pod-network

注意:只要部署下面其中一個(gè),推薦calico

Calico是一個(gè)純?nèi)龑拥臄?shù)據(jù)中心網(wǎng)絡(luò)方案,caclico支持廣泛的平臺(tái),包括k8s,openstack等。

Calico在每一個(gè)計(jì)算節(jié)點(diǎn)利用linux kernel實(shí)現(xiàn)了一個(gè)高效的虛擬路由器(vRouter)來負(fù)責(zé)數(shù)據(jù)轉(zhuǎn)發(fā),而每個(gè)vRouter通過BGP協(xié)議負(fù)責(zé)把自己上運(yùn)行的workload的路由信息向整個(gè)calico網(wǎng)絡(luò)傳播。

此外,Calico項(xiàng)目還實(shí)現(xiàn)了k8s網(wǎng)絡(luò)策略,提供ACL功能

下載文件:

#curl https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/calico.yaml -O

下載完成后還需要修改里面定義Pod網(wǎng)絡(luò)(CALICO_IPV4POOL_CIDR),與前面的kubeadm init指定的pod-network-cidr一樣。


修改完成后應(yīng)用清單:

#kubectl apply -f calico.yaml

#kubectl get pods -n kube-system


#kubectl get nodes

NAME???????????? STATUS?? ROLES?????????? AGE??? ?VERSION

hs-app-552?????? Ready???????????? 129m??? v1.27.4

hs-develop-560?? Ready???????????? 126m??? v1.27.4

hs-tmp-153?????? Ready???control-plane?? 4h48m?? v1.27.4

安裝完成后

NotReady狀態(tài)轉(zhuǎn)換成了Ready狀態(tài)。


十六、安裝特定版本docker-cd

16.1 查找特定版本

# yum list docker-ce --showduplicates


# yum install docker-ce-24.0.6-1.el8

cri-docker安裝:

# https://ghproxy.net/https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.4/cri-dockerd-0.3.4-3.el8.x86_64.rpm

# chmod +x cri-dockerd-0.3.4-3.el8.x86_64.rpm

# yum localinstall cri-dockerd-0.3.4-3.el8.x86_64.rpm


修改下面內(nèi)容:

# vi? /usr/lib/systemd/system/cri-docker.service

ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9 --cni-bin-dir=/opt/cni/bin --cni-cache-dir=/var/lib/cni/cache --cni-conf-dir=/etc/cni/net.d

# systemctl start cri-docker.service

十七、安裝特定的kubeadm kubelet kubectl

# yum list kubeadm --showduplicates



# yum install kubeadm-1.28.2-0

再master上生成新的token:

# kubeadm token create--print-join-command

再新增節(jié)點(diǎn)操作進(jìn)入集群:

# kubeadm join 192.168.2.153:6443 --token c35u48.bkukg80xomkud3pw --discovery-token-ca-cert-hash? ?sha256:4b5ab79c068aabb8ed9c3dda021f1afb28dc4f6126149bd4057928a9cac6ba8a --cri-socket unix:///var/run/cri-dockerd.sock

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

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

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