最新基于ubuntu20.10 server部署k8s1.21.0集群實(shí)驗(yàn)

ubuntu20.10 server+docker20.10.6+k8s1.21.0

1养渴、所有節(jié)點(diǎn)店煞,這里是3臺vm秧饮,分別改hostname

改hostname:vi /etc/hostname

hostname k8s-master131

建議把hostname對應(yīng)的IP寫進(jìn)/etc/hosts文件,以便dns解析

cat >> /etc/hosts <<EOF
192.168.21.131 k8s-master131
192.168.21.132 k8s-node132
192.168.31.133 k8s-node133
EOF

2浮驳、所有節(jié)點(diǎn)吁峻,這里是3臺vm滑负,分別配置IP

192.168.21.131 k8s-master131

192.168.21.132 k8s-node132

192.168.21.133 k8s-node133

/etc/netplan在张,根據(jù)個(gè)人環(huán)境的不同來編輯IP,我的環(huán)境yaml文件為:00-installer-config.yaml

network:

? ? ethernets:

? ? ? ? ens3:

? ? ? ? ? ? addresses: [192.168.21.131/24]

? ? ? ? ? ? gateway4: 192.168.21.254

? ? ? ? ? ? nameservers:

? ? ? ? ? ? ? ? ? ? addresses: [202.96.134.133矮慕,114.114.114.114]

? ? version: 2

3帮匾、修改為cst東八區(qū)時(shí)區(qū),校準(zhǔn)日期時(shí)間痴鳄。

date -R

tzselect

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

sudo date -s MM/DD/YY //修改日期

sudo date -s hh:mm:ss //修改時(shí)間

在修改時(shí)間以后瘟斜,修改硬件CMOS的時(shí)間

sudo hwclock --systohc

如果需要修改時(shí)間為24小時(shí),我們可以修改/etc/default/locale痪寻,默認(rèn)沒有LC_TIME這個(gè)變量螺句,我們在文件中增加一行,設(shè)置改變量如下:

cat /etc/default/locale

LANG=en_US.UTF-8

LC_TIME=en_DK.UTF-8

時(shí)間同步

ntpdate ntp.aliyun.com

4橡类、防火墻設(shè)置

查看當(dāng)前防火墻狀態(tài)

? 在Ubuntu中 我們使用sudo ufw status命令查看當(dāng)前防火墻狀態(tài);inactive狀態(tài)是防火墻關(guān)閉狀態(tài) active是開啟狀態(tài)蛇尚。

開啟防火墻

? 在Ubuntu中 我們使用sudo ufw enable命令來開發(fā)防火墻 通過sudo ufw status命令查看開啟防火墻后的狀態(tài)為active 說明防火墻開啟成功。

關(guān)閉防火墻

在Ubuntu中 我們使用sudo ufw disable命令來關(guān)閉防火墻顾画。執(zhí)行該命令之后 我們使用sudo ufw status命令來查看當(dāng)前防火墻的狀態(tài) 如果是inactive 說明我們的防火墻已經(jīng)關(guān)閉掉了取劫。

Ubuntu中其他常用的防火墻命令

ufw default allow/deny:外來訪問默認(rèn)允許/拒絕

ufw allow/deny 20:允許/拒絕 訪問20端口,20后可跟/tcp或/udp,表示tcp或udp封包研侣。

ufw allow/deny servicename:ufw從/etc/services中找到對應(yīng)service的端口谱邪,進(jìn)行過濾。

ufw allow proto tcp from 10.0.1.0/10 to 本機(jī)ip port 25:允許自10.0.1.0/10的tcp封包訪問本機(jī)的25端口庶诡。

ufw delete allow/deny 20:刪除以前定義的"允許/拒絕訪問20端口"的規(guī)則

例如開啟允許80端口被訪問惦银,如下圖所示

5、禁用swap

sudo swapoff -a

將文件系統(tǒng)設(shè)置為可讀寫

sudo mount -n -o remount,rw /

將文件中的swap行使用#注釋掉

sudo vim /etc/fstab

重啟電腦或exit后再進(jìn)灌砖。

reboot

6.使流量通過iptables

加載模塊

sudo modprobe br_netfilter

檢查是否加載

lsmod | grep br_netfilter

br_netfilter? ? ? ? ? 28672? 0

bridge? ? ? ? ? ? ? ? 200704? 1 br_netfilter

配置正確流量

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf

br_netfilter

EOF

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

EOF

應(yīng)用配置

sudo sysctl --system

7璧函、docker安裝

# step 1: 安裝必要的一些系統(tǒng)工具
apt-get update
apt-get -y install apt-transport-https ca-certificates curl software-properties-common

# Step 2: 安裝GPG證書
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

# Step 3: 寫入軟件源信息
add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu$(lsb_release -cs)stable"

# Step 4: 更新并安裝v20.10.0版的Docker-CE

國內(nèi)源安裝指定的docker版本可參考:https://blog.csdn.net/weixin_41082546/article/details/106789673

apt-get -y update

查看源力包含哪些docker版本

apt-cache madison docker-ce

安裝指定的docker版本

格式為:

sudo apt-get install docker-ce=<VERSION>

例如:apt-get install docker-ce=5:20.10.6~3-0~ubuntu

docker version

# Step 5:配置鏡像加速

mkdir -p /etc/docker

tee /etc/docker/daemon.json <<-'EOF'{"registry-mirrors": ["https://wvmqh31a.mirror.aliyuncs.com"]}EOF

.# Step 6:kubelet需要讓docker容器引擎使用systemd作為CGroup的驅(qū)動(dòng),其默認(rèn)值為cgroupfs基显,因而,我們還需要編輯docker的配置文件/etc/docker/daemon.json善炫,添加如下內(nèi)容撩幽。"exec-opts": ["native.cgroupdriver=systemd"]

因此daemon.json內(nèi)容如下:

{

? "registry-mirrors": ["https://wvmqh31a.mirror.aliyuncs.com"],

? "exec-opts": ["native.cgroupdriver=systemd"]

}

# Step 7:重新加載配置文件,然后重啟服務(wù)箩艺,并且設(shè)置為開機(jī)啟動(dòng)窜醉。

systemctl daemon-reload

systemctl restart docker

systemctlenabledocker

8、在各主機(jī)上生成kubelet和kubeadm等相關(guān)程序包的倉庫艺谆,這里使用阿里云鏡像源

# curl -fsSL https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -

# cat <<EOF >/etc/apt/sources.list.d/kubernetes.listdeb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF

# apt update

9榨惰、安裝kubelet、kubeadm静汤、kubectl琅催,并將kubelet設(shè)置為開機(jī)啟動(dòng)

# apt install kubelet=1.21.0-00 kubeadm=1.21.0-00 kubectl=1.21.0-00 -y

# systemctl enable kubelet

注: 安裝完成后居凶,要確保kubeadm等程序文件的版本,這將也是后面初始化Kubernetes集群時(shí)需要明確指定的版本號

10藤抡、初始化Master節(jié)點(diǎn)


# kubeadm init \

--apiserver-advertise-address=192.168.21.131 \

--image-repository registry.aliyuncs.com/google_containers \

--kubernetes-version=v1.21.0 \

--service-cidr=10.96.0.0/12 \

--pod-network-cidr=10.244.0.0/16 \

--token-ttl=0

命令中的各選項(xiàng)簡單說明如下:

--apiserver-advertise-address:apiserver通告給其它組件的IP地址侠碧,一般應(yīng)該為Master節(jié)點(diǎn)用于集群內(nèi)部通信的IP地址

--image-repository:指定要使用的鏡像倉庫,默認(rèn)為gcr.io

kubernetes-version:kubernetes程序組件的版本號缠黍,必須要與前面安裝的版本一致

--service-cidr:集群內(nèi)部虛擬網(wǎng)絡(luò)弄兜,Pod統(tǒng)一訪問入口;service的網(wǎng)絡(luò)地址范圍瓷式,其值為CIDR格式的網(wǎng)絡(luò)地址替饿,默認(rèn)地址為10.96.0.0/12

--pod-network-cidr:Pod網(wǎng)絡(luò)的地址范圍,其值為CIDR格式的網(wǎng)絡(luò)地址贸典,通常视卢,F(xiàn)lannel網(wǎng)絡(luò)插件的默認(rèn)為10.244.0.0/16,Project Calico插件的默認(rèn)值為192.168.0.0/16瓤漏;本章使用的是calico插件腾夯,所以下面部署CNI網(wǎng)絡(luò)插件時(shí)需要與這里設(shè)置的保持一致。

--token-ttl:共享令牌(token)的過期時(shí)長蔬充,默認(rèn)為24小時(shí)蝶俱,0表示永不過期;為防止不安全存儲等原因?qū)е碌牧钆菩孤段<凹喊踩⒙ㄗh為其設(shè)定過期時(shí)長榨呆。未設(shè)定該選項(xiàng)時(shí),在token過期后庸队,若期望再向集群中加入其它節(jié)點(diǎn)积蜻,可以使用如下命令重新創(chuàng)建token,并生成節(jié)點(diǎn)加入命令彻消。

一般能順利把k8s系統(tǒng)自身kube-system組件的鏡像拉下來:

kube-apiserver
kube-proxy
kube-scheduler
kube-controller-manager
pause
coredns
etcd

也可以手動(dòng)docker pull下來竿拆,或者重tar包導(dǎo)入。

這里可能回用到:
docker pull
docker tag
docker load -i

11宾尚、設(shè)定kubectl

kubectl是kube-apiserver的命令行客戶端程序丙笋,實(shí)現(xiàn)了除系統(tǒng)部署之外的幾乎全部的管理操作,是kubernetes管理員使用最多的命令之一煌贴。kubectl需經(jīng)由API server認(rèn)證及授權(quán)后方能執(zhí)行相應(yīng)的管理操作御板,kubeadm部署的集群為其生成了一個(gè)具有管理員權(quán)限的認(rèn)證配置文件/etc/kubernetes/admin.conf,它可由kubectl通過默認(rèn)的"$HOME/.kube/config"的路徑進(jìn)行加載牛郑。當(dāng)然怠肋,用戶也可在kubectl命令上使用--kubeconfig選項(xiàng)指定一個(gè)別的位置。

下面復(fù)制認(rèn)證為Kubernetes系統(tǒng)管理員的配置文件至目標(biāo)用戶(例如當(dāng)前用戶root)的家目錄下淹朋,用于kubectl連接Kubernetes集群:

# mkdir -p $HOME/.kube

# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

# chown $(id -u):$(id -g) $HOME/.kube/config

12笙各、下載calico.yaml钉答、修改對應(yīng)IP網(wǎng)段

wget https://docs.projectcalico.org/manifests/calico.yaml

# 下載完后還需要修改里面定義Pod網(wǎng)絡(luò)(CALICO_IPV4POOL_CIDR),與前面kubeadm init命令中使用的--pod-network-cidr選項(xiàng)指定的一樣

3672? ? ? ? ? ? - name: CALICO_IPV4POOL_CIDR

3673? ? ? ? ? ? ? value: "10.244.0.0/16"

kubectl apply -f calico.yaml

13酪惭、確認(rèn)部署網(wǎng)絡(luò)插件的Pod正常運(yùn)行狀態(tài)

# kubectl get pod -n kube-system -l k8s-app=calico-node

NAME? ? ? ? ? ? ? ? READY? STATUS? ? RESTARTS? AGE

calico-node-26s88? 1/1? ? Running? 0? ? ? ? ? 8m31s

calico-node-c2mpn? 1/1? ? Running? 0? ? ? ? ? 8m28s

calico-node-dhhg8? 1/1? ? Running? 0? ? ? ? ? 15m

14希痴、驗(yàn)證master節(jié)點(diǎn)已經(jīng)就緒

kubectl get nodes

15、添加Node節(jié)點(diǎn)到集群中

kubeadm join 192.168.21.131:6443 --token 19ovkd.gnzmwvarw3zocqgs \

>? ? ? ? --discovery-token-ca-cert-hash sha256:4109f5d6d92c94a6c36814cf0f1ae53a885369fb3d4652f67cca9b5ec436ff89

16春感、配置kubectl命令自動(dòng)補(bǔ)全功能

# echo "source <(kubectl completion bash)" >> ~/.profile

17砌创、驗(yàn)證

17.1 kubectl get cs;kubectl get node

17.2 kubectl create deployment nginx --image=nginx

從上面的返回結(jié)果中來看,新建的Pod轉(zhuǎn)態(tài)為"Running"鲫懒,并且就緒嫩实。表示運(yùn)行正常。

驗(yàn)證Pod網(wǎng)絡(luò)通信:

17.3 kubectl expose deployment nginx --port=80 --target-port=80 --type=NodePort

如上圖窥岩,已經(jīng)成功的創(chuàng)建了service資源甲献,并且關(guān)聯(lián)到了后端的pod,現(xiàn)在打開瀏覽器颂翼,輸入任意節(jié)點(diǎn)的IP+31665端口即可訪問pod提供的應(yīng)用晃洒,http://NodeIP:NodePort

? ? 17.4 驗(yàn)證DNS解析

使用busybox:1.28.4鏡像創(chuàng)建一個(gè)pod,用于dns解析上面創(chuàng)建的service名稱

kubectl run -it --rm --image=busybox:1.28.4 sh


從上圖返回的結(jié)果信息中朦乏,可以驗(yàn)證Kubernetes集群中的DNS服務(wù)工作正常球及。至此,1個(gè)Master呻疹,并附帶2個(gè)Node的kubernetes集群基礎(chǔ)設(shè)置已經(jīng)部署完成吃引,并且其核心功能可以正常使用。9刽锤、部署Dashboard

18镊尺、部署Dashboard

18.1 下載配置清單文件

wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.3/aio/deploy/recommended.yaml

18.2 修改相關(guān)內(nèi)容

18.3 應(yīng)用配置清單文件,創(chuàng)建相關(guān)資源

kubectl apply -f recommended.yaml


從上面的反饋結(jié)果來看并思,pod運(yùn)行正常庐氮,并且已經(jīng)就緒。

18.4訪問Dashboard

打開瀏覽器宋彼,輸入集群中任意節(jié)點(diǎn)的IP以https://NodeIP:30001格式訪問


18.5 生成token

root@k8s-master131:~# kubectl get ClusterRole|grep -i cluster-admin

cluster-admin? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2021-04-12T17:09:47Z

18.6創(chuàng)建service account并綁定默認(rèn)cluster-admin管理員集群角色:

創(chuàng)建用戶:

kubectl create serviceaccount dashboard-admin -n kube-system

用戶授權(quán)旭愧,把dashboard-admin用戶與cluster-admin管理員集群角色綁定:

kubectl create clusterrolebinding dashboard-admin-binding --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin

# 獲取用戶token
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

也可以通過yaml文件創(chuàng)建:

授予Dashboard賬戶集群管理權(quán)限

要讓dashboard可以訪問集群的各種資源,需要給dashboard賬戶賦予權(quán)限宙暇,這一步很關(guān)鍵,如果你缺少這一步的話议泵,你打開dashboard后會報(bào)很多forbidden占贫,如下:

configmaps is forbidden: User "system:serviceaccount:kube-system:service-controller" cannot list resource "configmaps" in API group "" in the namespace "default"

close

warning

persistentvolumeclaims is forbidden: User "system:serviceaccount:kube-system:service-controller" cannot list resource "persistentvolumeclaims" in API group "" in the namespace "default"

close

warning

....

要獲得管理集群的權(quán)限,新建admin-user-admin.rbac.yaml文件先口,內(nèi)容如下

apiVersion: v1

kind: ServiceAccount

metadata:

name: admin-user

namespace: kube-system

---

# Create ClusterRoleBinding

apiVersion: rbac.authorization.k8s.io/v1

kind: ClusterRoleBinding

metadata:

name: admin-user

roleRef:

apiGroup: rbac.authorization.k8s.io

kind: ClusterRole

name: cluster-admin

subjects:

- kind: ServiceAccount

name: admin-user

namespace: kube-system

執(zhí)行

[root@master] ~$ kubectl create -f admin-user-admin.rbac.yaml

找到admin-user-admin的token型奥,記下這串token瞳收,等下登錄的時(shí)候會使用,這個(gè)token默認(rèn)是永久的厢汹。

[root@master] ~$ kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末螟深,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子烫葬,更是在濱河造成了極大的恐慌界弧,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件搭综,死亡現(xiàn)場離奇詭異垢箕,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)兑巾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進(jìn)店門条获,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蒋歌,你說我怎么就攤上這事帅掘。” “怎么了堂油?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵修档,是天一觀的道長。 經(jīng)常有香客問我称诗,道長萍悴,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任寓免,我火速辦了婚禮癣诱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘袜香。我一直安慰自己撕予,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布蜈首。 她就那樣靜靜地躺著实抡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪欢策。 梳的紋絲不亂的頭發(fā)上吆寨,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天,我揣著相機(jī)與錄音踩寇,去河邊找鬼啄清。 笑死,一個(gè)胖子當(dāng)著我的面吹牛俺孙,可吹牛的內(nèi)容都是我干的辣卒。 我是一名探鬼主播掷贾,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼荣茫!你這毒婦竟也來了想帅?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤啡莉,失蹤者是張志新(化名)和其女友劉穎港准,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體票罐,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡叉趣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了该押。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片疗杉。...
    茶點(diǎn)故事閱讀 40,852評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖蚕礼,靈堂內(nèi)的尸體忽然破棺而出烟具,到底是詐尸還是另有隱情,我是刑警寧澤奠蹬,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布朝聋,位于F島的核電站,受9級特大地震影響囤躁,放射性物質(zhì)發(fā)生泄漏冀痕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一狸演、第九天 我趴在偏房一處隱蔽的房頂上張望言蛇。 院中可真熱鬧,春花似錦宵距、人聲如沸腊尚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽婿斥。三九已至,卻和暖如春哨鸭,著一層夾襖步出監(jiān)牢的瞬間民宿,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工像鸡, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留勘高,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像华望,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子仅乓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評論 2 361

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