目錄
基于kubeadm部署K8S集群
一、環(huán)境準(zhǔn)備
1、主機(jī)初始化配置
2、配置主機(jī)名并綁定hosts,不同主機(jī)名稱不同
3、主機(jī)配置初始化
二、部署docker環(huán)境
1、三臺主機(jī)上分別部署 Docker 環(huán)境
2、鏡像加速器(所有主機(jī)配置)
三、部署kubernetes集群
(一)組件介紹
(二)配置阿里云yum源
(三)安裝kubelet kubeadm kubectl
(四)配置init-config.yaml
init-config.yaml配置
(五)安裝master節(jié)點(diǎn)
2、安裝matser節(jié)點(diǎn)
3、根據(jù)提示操作
(六)安裝node節(jié)點(diǎn)
基于kubeadm部署K8S集群
一、環(huán)境準(zhǔn)備
IP地址 |
主機(jī)名 |
組件 |
192.168.100.131 |
k8s-master |
kubeadm、kubelet、kubectl、docker-ce |
192.168.100.132 |
k8s-node01 |
kubeadm、kubelet、kubectl、docker-ce |
192.168.100.133 |
k8s-node02 |
kubeadm、kubelet、kubectl、docker-ce |
注意:所有主機(jī)配置推薦CPU:2C+ ?Memory:2G+
1、主機(jī)初始化配置
所有主機(jī)配置禁用防火墻和selinux
[root@localhost ~]# setenforce 0
[root@localhost ~]# iptables -F
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# systemctl stop NetworkManager
[root@localhost ~]# systemctl disable NetworkManager
[root@localhost ~]# sed -i '/^SELINUX=/s/enforcing/disabled/' /etc/selinux/config
2、配置主機(jī)名并綁定hosts,不同主機(jī)名稱不同
[root@localhost ~]# hostname k8s-master
[root@localhost ~]# bash
[root@k8s-master ~]# cat << EOF >> /etc/hosts
192.168.100.131 k8s-master
192.168.100.132 k8s-node01
192.168.100.133 k8s-node02
EOF
[root@k8s-master ~]# scp /etc/hosts 192.168.100.132:/etc/
[root@k8s-master ~]# scp /etc/hosts 192.168.100.133:/etc/
[root@localhost ~]# hostname k8s-node01
[root@localhost ~]# bash
[root@localhost ~]# hostname k8s-node02
[root@localhost ~]# bash
3、主機(jī)配置初始化
(所有主機(jī),且配置為2核2G)
[root@k8s-master ~]# yum -y install vim wget net-tools lrzsz
[root@k8s-master ~]# swapoff -a必須為兩G的運(yùn)行否則:
[root@k8s-master ~]# sed -i '/swap/s/^/#/' /etc/fstab
[root@k8s-node01 ~]# vim /etc/sysctl.conf
[root@k8s-node01 ~]# modprobe br_netfilter
[root@k8s-node01 ~]# sysctl -p
二、部署docker環(huán)境
1、三臺主機(jī)上分別部署 Docker 環(huán)境
因為 Kubernetes 對容器的編排需要 Docker 的支持。
[root@k8s-master ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@k8s-master ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
????????使用 YUM 方式安裝 Docker 時,推薦使用阿里的 YUM 源。阿里的官方開源站點(diǎn)地址是:https://developer.aliyun.com/mirror/,可以在站點(diǎn)內(nèi)找到 Docker 的源地址。
[root@k8s-master ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@k8s-master ~]# yum clean all && yum makecache fast
[root@k8s-master ~]# yum -y install docker-ce
[root@k8s-master ~]# systemctl start docker
[root@k8s-master ~]# systemctl enable docker
2、鏡像加速器(所有主機(jī)配置)
????????很多鏡像都是在國外的服務(wù)器上,由于網(wǎng)絡(luò)上存在的問題,經(jīng)常導(dǎo)致無法拉取鏡像的錯誤,所以最好將鏡像拉取地址設(shè)置成國內(nèi)的。目前國內(nèi)很多公有云服務(wù)商都提供了鏡像加速服務(wù)。鏡像加速配置如下所示。
https://dockerhub.azk8s.cn //Azure 中國鏡像
https://hub-mirror.c.163.com //網(wǎng)易云加速器
[root@k8s-master ~]# vim /etc/docker/daemon.json
[root@k8s-master ~]# systemctl daemon-reload
[root@k8s-master ~]# systemctl restart docker
????????將鏡像加速地址直接寫入/etc/docker/daemon.json 文件內(nèi),如果文件不存在,可直接新建文件并保存。
????????通過該文件擴(kuò)展名可以看出,daemon.json 的內(nèi)容必須符合 json 格式,書寫時要注意。同時,由于單一鏡像服務(wù)存在不可用的情況,在配置加速時推薦配置兩個或多個加速地址,從而達(dá)到冗余、高可用的目的。
三、部署kubernetes集群
(一)組件介紹
三個節(jié)點(diǎn)都需要安裝下面三個組件
1、kubeadm:安裝工具,使所有的組件都會以容器的方式運(yùn)行
2、kubectl:客戶端連接K8S API工具
3、kubelet:運(yùn)行在node節(jié)點(diǎn),用來啟動容器的工具
(二)配置阿里云yum源
推薦使用阿里云的yum源安裝:
[root@k8s-master ~]#
vim ?/etc/yum.repos.d/kubernetes.repo
[root@k8s-master ~]# ls /etc/yum.repos.d/
(三)安裝kubelet kubeadm kubectl
所有主機(jī)配置
[root@k8s-master ~]# yum -y install kubelet-1.20.0 kubeadm-1.20.0 kubectl-1.20.0
[root@k8s-master ~]# systemctl enable kubelet
????????kubelet 剛安裝完成后,通過 systemctl start kubelet 方式是無法啟動的,需要加入節(jié)點(diǎn)或初始化為 master 后才可啟動成功。
????????如果在命令執(zhí)行過程中出現(xiàn)索引 gpg 檢查失敗的情況, 請使用 yum install -y --nogpgcheck kubelet kubeadm kubectl 來安裝。
(四)配置init-config.yaml
????????Kubeadm 提供了很多配置項,Kubeadm 配置在 Kubernetes 集群中是存儲在ConfigMap 中的,也可將這些配置寫入配置文件,方便管理復(fù)雜的配置項。Kubeadm 配內(nèi)容是通過 kubeadm config 命令寫入配置文件的。
????????在master節(jié)點(diǎn)安裝,master 定于為192.168.100.131,通過如下指令創(chuàng)建默認(rèn)的init-config.yaml文件:
[root@k8s-master ~]# kubeadm config print init-defaults > init-config.yaml
其中,kubeadm config 除了用于輸出配置項到文件中,還提供了其他一些常用功能,如下所示。
1)kubeadm config view:查看當(dāng)前集群中的配置值。
2)kubeadm config print join-defaults:輸出 kubeadm join 默認(rèn)參數(shù)文件的內(nèi)容。
3)kubeadm config images list:列出所需的鏡像列表。
4)kubeadm config images pull:拉取鏡像到本地。
5)kubeadm config upload from-flags:由配置參數(shù)生成 ConfigMap。
init-config.yaml配置
[root@k8s-master ~]# cat init-config.yaml
(五)安裝master節(jié)點(diǎn)
1、拉取所需鏡像
[root@k8s-master ~]# kubeadm config images list --config init-config.yaml
[root@k8s-master ~]# kubeadm config images pull --config=init-config.yaml
2、安裝matser節(jié)點(diǎn)
[root@k8s-master ~]#
echo "1" > /proc/sys/net/ipv4/ip_forward
[root@k8s-master ~]#
kubeadm init --config=init-config.yaml
//初始化安裝K8S
????????Ps備注:在此一定要注意k8s和docker的版本,在這里,我用的docker版本是19,k8s版本是1.20,如果有其他的情況導(dǎo)致k8s不支持docker版本,會出現(xiàn)下列情況:
3、根據(jù)提示操作
kubectl 默認(rèn)會在執(zhí)行的用戶家目錄下面的.kube 目錄下尋找config 文件。這里是將在初始化時[kubeconfig]步驟生成的admin.conf 拷貝到.kube/config
[root@k8s-master ~]# mkdir -p $HOME/.kube
[root@k8s-master ~]# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@k8s-master ~]# chown $(id -u):$(id -g) $HOME/.kube/config
kubeadm init 主要執(zhí)行了以下操作:
l [init]:指定版本進(jìn)行初始化操作
l [preflight] :初始化前的檢查和下載所需要的Docker鏡像文件
l [kubelet-start] :生成kubelet 的配置文件”/var/lib/kubelet/config.yaml”,沒有這個文件kubelet無法啟動,所以初始化之前的kubelet 實際上啟動失敗。
l [certificates]:生成Kubernetes 使用的證書,存放在/etc/kubernetes/pki 目錄中。
l [kubeconfig] :生成 Kubeconfig 文件,存放在/etc/kubernetes 目錄中,組件之間通信需要使用對應(yīng)文件。
l [control-plane]:使用/etc/kubernetes/manifest 目錄下的YAML 文件,安裝 Master 組件。
l [etcd]:使用/etc/kubernetes/manifest/etcd.yaml 安裝Etcd 服務(wù)。
l [wait-control-plane]:等待control-plan 部署的Master 組件啟動。
l [apiclient]:檢查Master組件服務(wù)狀態(tài)。
l [uploadconfig]:更新配置
l [kubelet]:使用configMap 配置kubelet。
l [patchnode]:更新CNI信息到Node 上,通過注釋的方式記錄。
l [mark-control-plane]:為當(dāng)前節(jié)點(diǎn)打標(biāo)簽,打了角色Master,和不可調(diào)度標(biāo)簽,這樣默認(rèn)就不會使用Master 節(jié)點(diǎn)來運(yùn)行Pod。
l [bootstrap-token]:生成token 記錄下來,后邊使用kubeadm join 往集群中添加節(jié)點(diǎn)時會用到
l [addons]:安裝附加組件CoreDNS 和kube-proxy
????????Kubeadm 通過初始化安裝是不包括網(wǎng)絡(luò)插件的,也就是說初始化之后是不具備相關(guān)網(wǎng)絡(luò)功能的,比如 k8s-master 節(jié)點(diǎn)上查看節(jié)點(diǎn)信息都是“Not Ready”狀態(tài)、Pod 的 CoreDNS無法提供服務(wù)等。
(六)安裝node節(jié)點(diǎn)
根據(jù)master安裝時的提示信息
兩個node節(jié)點(diǎn)操作:
[root@k8s-node01 ~]# kubeadm join 192.168.100.131:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:78bdd0f01660f4e84355b70aa8807cf1d0d6325b0b28502b29c241563e93b4ae
[root@k8s-node02 ~]# kubeadm join 192.168.100.131:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:78bdd0f01660f4e84355b70aa8807cf1d0d6325b0b28502b29c241563e93b4ae
Master操作:
[root@k8s-master ~]# kubectl get nodes
文章來源:http://www.zghlxwxcb.cn/news/detail-647092.html
????????前面已經(jīng)提到,在初始化 k8s-master 時并沒有網(wǎng)絡(luò)相關(guān)配置,所以無法跟 node 節(jié)點(diǎn)通信,因此狀態(tài)都是“NotReady”。但是通過 kubeadm join 加入的 node 節(jié)點(diǎn)已經(jīng)在k8s-master 上可以看到。文章來源地址http://www.zghlxwxcb.cn/news/detail-647092.html
到了這里,關(guān)于基于kubeadm部署K8S集群的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!