使用kubeadm搭建k8s集群

本文通過kudeadm方式在centos7上安裝kubernetes集群:
一、k8s安裝準備工作;
二、Docker安裝;
三、Master節(jié)點安裝;
四、Node節(jié)點安裝;
五、集群測試。

一、k8s安裝前的準備工作

1.1 kubeadm

Kubeadm是一個部署工具,提供kubeadm init和kubeadm join,用于快速部署Kubernetes集群。部署地址:https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/

1.2 查看centos版本

這里使用centos7系統(tǒng),查看centos版本:
rpm -q centos-release

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

關(guān)閉防火墻
systemctl disable firewalld --now

臨時關(guān)閉setlinux:
setenseforce 0
永久關(guān)閉的方法:
vim /etc/selinux/config
SELINUX=enforcing改為SELINUX=disabled,保存后退出

swapoff -a #臨時關(guān)閉 # free 查看
永久關(guān)閉:
sed -i.bak '/swap/s/^/#/' /etc/fstab

1.4內(nèi)核參數(shù)修改,內(nèi)核調(diào)整,將橋接的IPv4流量傳遞到iptables的鏈

永久修改
[root@master ~]# cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward =1
EOF
[root@master ~]# sysctl -p /etc/sysctl.d/k8s.conf

二、Docker安裝;

2.1 docker部署

vim /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes repo
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0 -- 設(shè)置0不做公鑰檢查
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
https://mirrors.aliyun.com/kubernetes/yum/doc/yum-package-key.gpg

--這里是設(shè)置docker的yum源
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新yum緩存
[root@master ~]# yum clean all
[root@master ~]# yum -y makecache

2.2安裝docker ,每個節(jié)點都需要安裝

yum list docker-ce --showduplicates | sort -r --該命令是查看倉庫中所有的docker的版本并選擇版本安裝
yum -y install docker-ce-18.06.1.ce-3.el7 --指定下載該版本的docekr
或者下載最新的版本 yum install docker-ce

2.3 配置國內(nèi)鏡像加速器
登陸地址為:https://cr.console.aliyun.com ,未注冊的可以先注冊阿里云賬戶,選擇容器鏡像服務(wù),配置鏡像加速器

配置docekr的鏡像地址命令
vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://wp6q9kkn.mirror.aliyuncs.com"]
}

重啟服務(wù)驗證
[root@centos7 ~]# systemctl restart docker
[root@centos7 ~]# docker --version
[root@centos7 ~]# docker run hello-world

1.19版之后k8s要求docker和k8s都使用systemd的cgroupDriver
修改daemon.json,新增
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"

2.4 安裝k8s部署的相關(guān)工具,安裝kubeadm,kubelet和kubectl

在部署kubernetes時,要求master node和worker node上的版本保持一致,否則會出現(xiàn)版本不同導(dǎo)致的奇怪問題。不指定版本會安裝最新版的工具
yum install -y kubelet-<version> kubectl-<version> kubeadm-<version>
yum install -y kubelet-1.21.1 kubectl-1.21.1 kubeadm-1.21.1 kubernetes-cni

安裝完成后開啟kubelet
systemctl enable --now kubelet

以上操作是master節(jié)點和node節(jié)點上均需要執(zhí)行的操作

三、Master節(jié)點安裝

3.啟動kubernetes集群(master節(jié)點上執(zhí)行)
3.1 kubeadm init

通過kubeadm init [flags]命令可以啟動一個master節(jié)點
kubeadm init \
--apiserver-advertise-address=192.168.100.10 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.21.1 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16

參數(shù)介紹

-kubernetes-version 后面的值通過 kubelet --version 查看
--apiserver-bind-port int32 Default: 6443 可以通過這個參數(shù)指定API-server的工作端口,默認是6443。
--config string 可以通過這個命令傳入kubeadm的配置文件。
--dry-run 帶了這個參數(shù)后,運行命令將會把kubeadm做的事情輸出到標(biāo)準輸出,但是不會實際部署任何東西。強烈推薦!
-h, --help 輸出幫助文檔。
--node-name string 指定當(dāng)前節(jié)點的名稱。
--pod-network-cidr string 通過這個值來設(shè)定pod網(wǎng)絡(luò)的IP地址網(wǎng)段;設(shè)置了這個值以后,控制平面會自動給每個節(jié)點設(shè)置CIDRs(無類別域間路由,Classless Inter-Domain Routing)。
--service-cidr string Default: “10.96.0.0/12” 設(shè)置service的CIDRs,默認為 10.96.0.0/12。
--service-dns-domain string Default: “cluster.local” 設(shè)置域名稱后綴,默認為cluster.local。
其他參數(shù)。
建議至少2 cpu ,2G,非硬性要求,1cpu,1G也可以搭建起集群,但會有WARNING

將結(jié)果保存,后續(xù)添加節(jié)點時用得到
一定要導(dǎo)入環(huán)境變量才可以使用kubectl

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

部署容器網(wǎng)絡(luò)插件

這個時候kubectl get node查看節(jié)點,會發(fā)現(xiàn) 節(jié)點狀態(tài)是NotReady, 這是因為我們還沒有部署容器網(wǎng)絡(luò),下面部署flannel容器網(wǎng)絡(luò) 參考 https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/
執(zhí)行 kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/c5d10c8/Documentation/kube-flannel.yml,計算云里可以先把文件下載下來,再執(zhí)行

(或者使用calico及其他網(wǎng)絡(luò)插件,可參考官方文檔https://kubernetes.io/zh/docs/tasks/administer-cluster/network-policy-provider/
安裝時替換文件image地址為aliyun地址)

四、Node節(jié)點安裝

4.1 kubeadm join node節(jié)點加入集群:
使用kubeadm join命令使node節(jié)點加入集群
在兩個 Node 節(jié)點執(zhí)行
使用kubeadm join 注冊Node節(jié)點到Matser
kubeadm join 的內(nèi)容,在上面kubeadm init 已經(jīng)生成好了

kubeadm join 192.168.100.10:6443 --token yhns57.4s3y2yll21ew8mta \
    --discovery-token-ca-cert-hash sha256:eeebf579f925b9a64b2fe1fde820bb1707496d8dbe6718759b93cb951c3fc651

生成一個新的token

kubeadm token create --print-join-command //默認有效期24小時,若想久一些可以結(jié)合--ttl參數(shù),設(shè)為0則用不過期

查看token

kubeadm token list


export POD_NAME=(kubectl get pods -o go-template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}') echo Name of the Pod:POD_NAME

?著作權(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)容