kubernetes集群搭建
1. 集群分類
kubernetes集群分為單Master節(jié)點集群和多Master節(jié)點集群。在實際應(yīng)用中我們一般采用多Master節(jié)點集群,實現(xiàn)高可用。
- 單Master節(jié)點集群模型:
- 多Master節(jié)點集群模型
2. 集群搭建硬件要求
-
Master節(jié)點:2核,4G內(nèi)存,20G磁盤
-
Node節(jié)點:4核,8G內(nèi)存,40G磁盤
Master只是作為控制節(jié)點,占用資源不高,但是Node節(jié)點進(jìn)行實際的業(yè)務(wù)處理等,占用資源較高。
3. 集群搭建方式
kubernetes集群一般有兩種搭建方式:
- Kubeadm
Kubeadm是一個K8s部署工具,提供kubeadm init和kubeadm join,用于快速部署Kubernetes集群。
官方地址:https://kubernetes.io/docs/reference/setup-tools/kubeadm/
- 二進(jìn)制包
從github下載發(fā)行版的二進(jìn)制包,手動部署每個組件,組成Kubernetes集群。
兩種方式比較:Kubeadm降低部署門檻,但屏蔽了很多細(xì)節(jié),遇到問題很難排查。如果想更容易可控,推薦使用二進(jìn)制包部署Kubernetes集群,雖然手動部署麻煩點,期間可以學(xué)習(xí)很多工作原理,也利于后期維護(hù)。
4. kubeadm部署方式
kubeadm是官方社區(qū)推出的一個用于快速部署kubernetes集群的工具,這個工具能通過兩條指令完成一個kubernetes集群的部署。
第一、創(chuàng)建一個Master節(jié)點
kubeadm init
第二、將Node節(jié)點加入到當(dāng)前集群中
kubeadm join <Master節(jié)點的IP和端口>
4.1 安裝要求
- 一臺或多臺機器,操作系統(tǒng)CentOS7.x-86_ x64
- 硬件配置: 2GB或更多RAM,2核CPU或更多CPU,硬盤30GB或更多
- 可以訪問外網(wǎng),需要拉取鏡像,如果服務(wù)器不能上網(wǎng),需要提前下載境像并導(dǎo)入節(jié)點
- 禁止swap分區(qū)
我這里使用虛擬機來模擬三臺服務(wù)器,分別作為master節(jié)點和node節(jié)點
節(jié)點屬性 | ip |
---|---|
master | 192.168.237.136 |
node1 | 192.168.237.137 |
node2 | 192.168.237.139 |
4.2 初始化工作
關(guān)閉防火墻
systemctl stop firewalld
systemctl disable firewalld
關(guān)閉selinux
sed -i 's/fenforcing/disabled/' /etc/selinux/config # 永久
setenforce 0 # 臨時
關(guān)閉swap
swapoff -a # 臨時
sed -ri 's/. *swap. */#&/' /etc/fstab # 永久
根據(jù)規(guī)劃設(shè)置主機名
hostnamectl set-hostname <hostname>
在master節(jié)點添加hosts(只在master節(jié)點執(zhí)行)
cat >> /etc/hosts << EOF
192.168.237.136 master1 # ip 主機名稱
192.168.237.137 worker1
192.168.237.139 worker2
EOF
將橋接的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 # 生效
時間同步
yum install ntpdate -y
ntpdate -u ntp.api.bz
4.3 安裝Docker/kubeadm/kubelet
Kubernetes默認(rèn)CRI (容器運行時) 為Docker,因此先安裝Docker
4.3.1 安裝Docker
參考之前的文章即可
https://blog.csdn.net/weixin_45842494/article/details/123013040
4.3.2 添加阿里云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.gpg
https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
4.3.3 安裝kubeadm , kubelet和kubectl
yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0 # 指定版本,根據(jù)需要選擇
systemctl enable kubelet # 設(shè)置開機啟動
4.4 部署Kubernetes Master
在主節(jié)點(Master)執(zhí)行
kubeadm init \
--apiserver-advertise-address=192.168.237.136 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.18.0 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16 # 這些網(wǎng)段沒嚴(yán)格要求,和當(dāng)前網(wǎng)段不沖突就行
看到提示信息中有
Your Kubernetes control-plane has initialized successfully!
表示成功了,同時使用docker images
可以看到拉取的鏡像。
使用kubectl工具(在提示信息中有,復(fù)制即可)
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 nodes
4.5 加入Kubernetes Node
在工作節(jié)點(Node)中執(zhí)行
向集群添加新節(jié)點,執(zhí)行在kubeadm init輸出的kubeadm join命令
# 這些內(nèi)容根據(jù)提示寫
kubeadm join 192.168.237.136:6443 --token 82lknt.d9fg3q0dnl17zc6d \
--discovery-token-ca-cert-hash sha256:1c95dcbc9104363f14061d6f5bb3a38dc21c5cec12a884017f5790b388ee6ba3
默認(rèn)token有效期為24小時,當(dāng)過期之后,該token就不可用了。這時就需要重新創(chuàng)建token,操作如下:
kubeadm token create --print-join-command
從圖中看出目前是NotReady
的狀態(tài),需要加入CNI網(wǎng)絡(luò)插件
4.6 部署CNI網(wǎng)絡(luò)插件
kubectl apply -f https://docs.projectcalico.org/v3.10/manifests/calico.yaml
[root@master1 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master1 Ready master 43m v1.18.0
worker1 Ready <none> 30m v1.18.0
worker2 Ready <none> 29m v1.18.0
[root@master1 ~]# kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
calico-kube-controllers-57546b46d6-zls4k 1/1 Running 0 2m45s
calico-node-9n9hj 1/1 Running 0 2m45s
calico-node-brrsq 1/1 Running 0 2m45s
calico-node-l79q8 1/1 Running 0 2m45s
coredns-7ff77c879f-64z5h 1/1 Running 0 44m
coredns-7ff77c879f-mprbq 1/1 Running 0 44m
etcd-master1 1/1 Running 0 45m
kube-apiserver-master1 1/1 Running 0 45m
kube-controller-manager-master1 1/1 Running 0 45m
kube-proxy-52ldf 1/1 Running 0 31m
kube-proxy-sb2sc 1/1 Running 0 44m
kube-proxy-xvqvh 1/1 Running 0 31m
kube-scheduler-master1 1/1 Running 0 45m
[root@master1 ~]#
狀態(tài)為Running
4.7 測試kubernetes集群
在Kubernetes集群中創(chuàng)建一個pod,驗證是否正常運行:
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get pod,svc
[root@master1 ~]# kubectl create deployment nginx --image=nginx
deployment.apps/nginx created
[root@master1 ~]# kubectl expose deployment nginx --port=80 --type=NodePort
service/nginx exposed
[root@master1 ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-f89759699-nntwg 1/1 Running 0 78s
[root@master1 ~]# kubectl get pod,svc
NAME READY STATUS RESTARTS AGE
pod/nginx-f89759699-nntwg 1/1 Running 0 2m49s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 54m
service/nginx NodePort 10.106.109.109 <none> 80:30179/TCP 2m3s
[root@master1 ~]#
注意這里端口號是30179
外網(wǎng)訪問:NodeIp:Port
當(dāng)然使用主節(jié)點ip也是可以的。
單master節(jié)點集群搭建完成。后面我們會講解多master 節(jié)點集群搭建。關(guān)注我哦。文章來源:http://www.zghlxwxcb.cn/news/detail-406998.html
微信公眾號先已開通,搜索 “江小南和他的小伙伴們” 就能找到我哦,各位小伙伴們可以關(guān)注一下,文章會進(jìn)行同步更新,方便查看哦。文章來源地址http://www.zghlxwxcb.cn/news/detail-406998.html
到了這里,關(guān)于【kubernetes篇】教你kubeadm方式搭建kubernetes 集群。單master節(jié)點集群,多master節(jié)點集群說明。的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!