【國內教程】跟着我從零開始搭建kubernetes多節點集羣(四)—— 利用kubeadm搭建多節點Kubernetes v1.18.2集羣

【國內教程】跟着我從零開始搭建kubernetes多節點集羣(四)—— 利用kubeadm搭建多節點Kubernetes v1.18.2集羣

前言

Kubernetes (K8s) is an open-source system for automating deployment, scaling, and management of containerized applications.

實驗環境

VirtualBox
在這裏插入圖片描述

Windows10

Centos7 64-bit鏡像

最終目標
Kubernetes v1.18.2
一Maser 兩Node的多節點集羣
Weave Net
在這裏插入圖片描述
參考資料
《kubernetes in action》


前提要求

我們再第三篇裏配置好了三臺機器(Master+2*Node)
請在實現第三篇之後,再開始以下操作。

利用kubeadm搭建多節點kubernetes集羣

配置Master節點

打開Virtual Box檢查master機器的CPU數量(它需要>2)

在這裏插入圖片描述

1. 先pull鏡像再kubeadm init

kubeadm config images list

W0425 17:16:05.170326 102958 configset.go:202] WARNING: kubeadm cannot validate component configs for API groups [kubelet.config.k8s.io kubeproxy.config.k8s.io]
k8s.gcr.io/kube-apiserver:v1.18.2
k8s.gcr.io/kube-controller-manager:v1.18.2
k8s.gcr.io/kube-scheduler:v1.18.2
k8s.gcr.io/kube-proxy:v1.18.2
k8s.gcr.io/pause:3.2
k8s.gcr.io/etcd:3.4.3-0
k8s.gcr.io/coredns:1.6.7

此時kube init容易失敗,我們需要先從阿里的庫裏把鏡像pull下來

編寫pull腳本

$ vi pullimages.sh

#!/bin/bash
images=(
kube-apiserver:v1.18.2
kube-controller-manager:v1.18.2
kube-scheduler:v1.18.2
kube-proxy:v1.18.2
pause:3.2
etcd:3.4.3-0
coredns:1.6.7
)
for imageName in ${images[@]} ; do
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
done

$ chmod +x pullimages.sh
$ ./pullimages.sh

kkubeadm初始化

kubeadm init

2. 在kubeadm init時指定鏡像倉庫

kubeadm init   \
--apiserver-advertise-address=192.168.1.31 \
 --image-repository registry.aliyuncs.com/google_containers \
 --service-cidr=10.1.0.0/16 

其中 --apiserver-advertise-address 爲master機器的ip地址,並指定了init 時 pull image的鏡像庫–image-repository registry.aliyuncs.com/google_containers


kubeadm init 成功
在這裏插入圖片描述

tips:
注意留意此處,此處是用來添加node機器節點的

初始化kubectl

export KUBECONFIG=/etc/kubernetes/admin.conf

利用kubectl列出所有的pod

kubectl get po

在這裏插入圖片描述
查看node信息
可是此時node的信息是NotReady,那是因爲我們還沒有設置網絡插件(flannel,weave)
配置容器網絡(選用Weave Net容器網絡插件)

kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"

查看node信息
在這裏插入圖片描述

(*)消除Master機器上的污點

默認情況下,kubernetes不會在master機器上自動部署服務(DaemonSet),如有需求可以選擇清除污點

kubectl taint nodes --all node-role.kubernetes.io/master-

tips:
這種設計是合理的,master是用來作爲管理集羣的機器,不能讓容器搭建影響到master機器的性能。

配置Node節點

對每個節點執行kubeadm join xxx即可(請根據Master kubeadm init結束後的提示來複現
我們需要添加node1和node2機器

kubeadm join 192.168.66.10:6443 --token iyv8bk.znbd90xom2owfyt2     --discovery-token-ca-cert-hash sha256:75ac4813fea57ab03145985eb8316359eab7b71c8218639d935e4d5ac9f5242f 

檢查集羣搭建成功

在master上列出node信息
在這裏插入圖片描述
node1和node2添加成功,每個node都處於Ready狀態很成功!
測試集羣
創建一個NodePort服務

kubectl create deployment kubia --image=luksa/kubia

kubectl expose deployment kubia --port=8080 --type=NodePort

成功運行Pod和Service
在這裏插入圖片描述
在這裏插入圖片描述

# 在Master機器上檢查是否搭建成功
curl 192.168.1.31:31700
curl 192.168.1.32:31700
curl 192.168.1.33:31700

在這裏插入圖片描述
成功搭建

關於作者

聯繫方式 MTI5MDAxNzU1NkBxcS5jb20=

你也可以通過 github | csdn | @新浪微博 關注我的動態

歡迎評論關注+點贊啊!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章