【W(wǎng)indows+虛擬機】Kubeadm方式搭建單master的k8s集群

田田田

一、準備工作

1薪缆、準備三臺虛擬機漾唉,系統(tǒng)為CentOS7.x,一臺用作master節(jié)點膛壹,另外兩臺作為node節(jié)點

  • 虛擬機硬件配置
    • 2GB或更多RAM
    • 2個或更多CPU
    • 硬盤30G或更多
  • 三臺虛擬機之間可以互通
  • 虛擬機可以訪問外網(wǎng)
  • 禁止三臺虛擬機的swap分區(qū)

2驾中、三臺虛擬機網(wǎng)絡(luò)設(shè)置辦法(供參考)

  • 橋接模式(選擇對應(yīng)的網(wǎng)卡)
  • 更改/etc/sysconfig/network-scripts/ifcfg-ens33文件的ONBOOT為yes
  • 重啟網(wǎng)絡(luò)服務(wù)service network restart

3、關(guān)閉三臺虛擬機的防火墻

# 臨時關(guān)閉
$ systemctl stop firewalld
# 永久關(guān)閉
$ systemctl disable firewalld

4模聋、關(guān)閉三臺虛擬機的selinux

# 永久關(guān)閉
$ sed -i 's/enforcing/disabled/' /etc/selinux/config
# 臨時關(guān)閉
$ setenforce 0

5肩民、關(guān)閉三臺虛擬機的swap

$ swapoff -a 
$ sed -ri 's/.*swap.*/#&/' /etc/fstab

6、根據(jù)規(guī)劃設(shè)置三臺虛擬機的主機名

$ hostnamectl set-hostname <hostname>

例如

image-20210330140111829.png

可以用hostname命令來查看設(shè)置的主機名

7链方、在 master 添加 hosts(只在master主機上執(zhí)行)

$ cat >> /etc/hosts << EOF
192.168.30.242 master
192.168.30.176 node01
192.168.30.149 node02
EOF

例如

image-20210330140432183.png

8持痰、在三臺虛擬機上將橋接的 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 

例如

image-20210330140659006.png

9祟蚀、設(shè)置三臺虛擬機的時間和Windows時間同步

$ yum install ntpdate -y
$ ntpdate time.windows.com

二工窍、安裝Docker、kubeadm前酿、kubelet

2.1. 安裝Docker

Kubernetes 默認 CRI( 容器運行時) 為 Docker患雏, 因此先安裝 Docker。

三臺虛擬機都要安裝罢维。

$ wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
# 安裝docker
$ yum -y install docker-ce-18.06.1.ce-3.el7
# 啟動docker 并添加開機啟動
$ systemctl enable docker && systemctl start docker
# 查看安裝的docker版本淹仑,返回版本即安裝成功
$ docker --version

如果虛擬機沒有wget命令,使用yum install wget安裝wget命令肺孵。

2.2. 添加阿里云 YUM 軟件源

三臺虛擬機都要添加

# 設(shè)置倉庫地址
$ cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
} 
EOF

# 重啟docker
$ systemctl restart docker

# 添加 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

可以使用docker info命令來查看倉庫地址是否修改成功

image-20210330142425313.png

2.3. 安裝 kubeadm匀借, kubelet 和 kubectl

# 不指定版本,則安裝最新的
$ yum install -y kubelet kubeadm kubectl
# 設(shè)置開機啟動
$ systemctl enable kubelet

三平窘、部署 Kubernetes Master

由于默認拉取鏡像地址 k8s.gcr.io 國內(nèi)無法訪問吓肋, 這里指定阿里云鏡像倉庫地址。

在Master主機上執(zhí)行(只在master主機上執(zhí)行

$ kubeadm init \
--apiserver-advertise-address=0.0.0.0 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.20.0 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16

命令參數(shù)說明(為了更好的理解命令)

# 初始化 Control-plane/Master 節(jié)點
kubeadm init \
    --apiserver-advertise-address 0.0.0.0 \
    # API 服務(wù)器所公布的其正在監(jiān)聽的 IP 地址,指定“0.0.0.0”以使用默認網(wǎng)絡(luò)接口的地址
    # 切記只可以是內(nèi)網(wǎng)IP初婆,不能是外網(wǎng)IP蓬坡,如果有多網(wǎng)卡,可以使用此選項指定某個網(wǎng)卡
    --apiserver-bind-port 6443 \
    # API 服務(wù)器綁定的端口,默認 6443
    --cert-dir /etc/kubernetes/pki \
    # 保存和存儲證書的路徑磅叛,默認值:"/etc/kubernetes/pki"
    --control-plane-endpoint kuber4s.api \
    # 為控制平面指定一個穩(wěn)定的 IP 地址或 DNS 名稱,
    # 這里指定的 kuber4s.api 已經(jīng)在 /etc/hosts 配置解析為本機IP
    --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \
    # 選擇用于拉取Control-plane的鏡像的容器倉庫屑咳,默認值:"k8s.gcr.io"
    # 因 Google被墻,這里選擇國內(nèi)倉庫
    --kubernetes-version 1.20.4 \
    # 為Control-plane選擇一個特定的 Kubernetes 版本弊琴, 默認值:"stable-1"
    --node-name master01 \
    #  指定節(jié)點的名稱,不指定的話為主機hostname兆龙,默認可以不指定
    --pod-network-cidr 10.10.0.0/16 \
    # 指定pod的IP地址范圍
    --service-cidr 10.20.0.0/16 \
    # 指定Service的VIP地址范圍
    --service-dns-domain cluster.local \
    # 為Service另外指定域名,默認"cluster.local"
    --upload-certs
    # 將 Control-plane 證書上傳到 kubeadm-certs Secret

安裝成功

顯示successfully即是安裝成功,提示信息里還給出了接下來要執(zhí)行的命令紫皇,可以在執(zhí)行這些命令前慰安,通過docker images 命令查看init過程拉取了哪些鏡像

當(dāng)前圖片只是指出接下來要執(zhí)行的命令的提示位置,先不用執(zhí)行圖片中標明的命令


image-20210330152252093.png

docker images查看拉取的鏡像

image-20210330143753009.png

接下來要執(zhí)行的命令聪铺,在命令行有提示

image-20210330143935363.png

命令如下
只在master節(jié)點上執(zhí)行

$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
# 查看節(jié)點
$ kubectl get nodes

再在兩個node虛擬機上執(zhí)行這一行命令

image-20210330151054468.png
kubeadm join 192.168.30.242:6443 --token jwmvm2.2re7i8qn2babk33r \
    --discovery-token-ca-cert-hash sha256:0666829988b6b99665c397983e8d03833d98bc3a4dce4891457459ee9b6e97a7

執(zhí)行結(jié)果

image-20210330152314451.png

在master上查看node

$ kubectl get nodes

node節(jié)點已經(jīng)加入了化焕,但是當(dāng)前狀態(tài)是NotReady的

image-20210330152346099.png

四、部署CNI網(wǎng)絡(luò)插件

在master主機上執(zhí)行
方式1:

# 源是國外源铃剔,可以尋找國內(nèi)源或多重試幾次
$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

$ kubectl get pods -n kube-system

方式2:把yaml文件拉到本地撒桨,再 kubectl apply -f 文件

image-20210330154133997.png

執(zhí)行后再次查看各node狀態(tài)

$ kubectl get nodes

結(jié)果


image-20210330154253079.png

五、測試

在 Kubernetes 集群中創(chuàng)建一個 pod键兜, 驗證是否正常運行(在master主機執(zhí)行)

# 創(chuàng)建pod
$ kubectl create deployment nginx --image=nginx
# 對外暴露端口
$ kubectl expose deployment nginx --port=80 --type=NodePort
# 列出當(dāng)前命名空間下的所有pod,services
$ kubectl get pod,svc
# 擴展
$ kubectl scale deployment nginx --replicas=2

運行結(jié)果

image-20210330154945864.png

這時候使用瀏覽器訪問任意兩臺node虛擬機的ip+nginx的開放端口31975凤类,都可以訪問到nginx。


image-20210330155818943.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末普气,一起剝皮案震驚了整個濱河市谜疤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌现诀,老刑警劉巖夷磕,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異赶盔,居然都是意外死亡企锌,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進店門于未,熙熙樓的掌柜王于貴愁眉苦臉地迎上來撕攒,“玉大人,你說我怎么就攤上這事烘浦《镀海” “怎么了?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵闷叉,是天一觀的道長擦俐。 經(jīng)常有香客問我,道長握侧,這世上最難降的妖魔是什么蚯瞧? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮品擎,結(jié)果婚禮上埋合,老公的妹妹穿的比我還像新娘。我一直安慰自己萄传,他們只是感情好甚颂,可當(dāng)我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般振诬。 火紅的嫁衣襯著肌膚如雪蹭睡。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天赶么,我揣著相機與錄音肩豁,去河邊找鬼。 笑死禽绪,一個胖子當(dāng)著我的面吹牛蓖救,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播印屁,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼斩例!你這毒婦竟也來了雄人?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤念赶,失蹤者是張志新(化名)和其女友劉穎础钠,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體叉谜,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡旗吁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了停局。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片很钓。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖董栽,靈堂內(nèi)的尸體忽然破棺而出码倦,到底是詐尸還是另有隱情,我是刑警寧澤锭碳,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布袁稽,位于F島的核電站,受9級特大地震影響擒抛,放射性物質(zhì)發(fā)生泄漏推汽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一歧沪、第九天 我趴在偏房一處隱蔽的房頂上張望歹撒。 院中可真熱鬧,春花似錦槽畔、人聲如沸栈妆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鳞尔。三九已至嬉橙,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間寥假,已是汗流浹背市框。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留糕韧,地道東北人枫振。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像萤彩,于是被迫代替她去往敵國和親粪滤。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內(nèi)容