Debian11最小化部署k8s集群

查看安裝 kubeadm-準備工作 對 k8s 安裝的基本要求:

  • 一臺兼容的 Linux 主機。Kubernetes 項目為基于 Debian 和 Red Hat 的 Linux 發(fā)行版以及一些不提供包管理器的發(fā)行版提供通用的指令
  • 每臺機器 2 GB 或更多的 RAM (如果少于這個數(shù)字將會影響你應(yīng)用的運行內(nèi)存)
  • 2 CPU 核或更多
  • 集群中的所有機器的網(wǎng)絡(luò)彼此均能相互連接(公網(wǎng)和內(nèi)網(wǎng)都可以)
  • 節(jié)點之中不可以有重復的主機名、MAC 地址或 product_uuid。請參見這里了解更多詳細信息雏掠。
  • 開啟機器上的某些端口疮鲫。請參見這里 了解更多詳細信息夺谁。
  • 禁用交換分區(qū)利术。為了保證 kubelet 正常工作,你 必須 禁用交換分區(qū)灸叼。

部署準備工作

整個部署環(huán)境全在virtualbox中實現(xiàn)
部署最小化 K8S 集群:master + node1 + node2

image.png

圖中是預(yù)先準備好的 3 臺虛擬機神汹,Debian安裝參考Debian11安裝簡述
虛擬機基本配置是:2G內(nèi)存+2核CPU+20G磁盤空間古今。

設(shè)置k8s環(huán)境準備條件(所有機器)

3臺主機IP分別為 192.168.36.213屁魏、192.168.36.141192.168.36.188捉腥、氓拼,將起配置到 文件中,保證互相合一通:

以下使用 master 節(jié)點進行演示查看但狭,其他節(jié)點操作均一致

基礎(chǔ)信息配置

# 修改主機名稱披诗,保證節(jié)點主機名不重復
www@debian:~$ sudo hostnamectl set-hostname k8s-master
www@debian:~$ hostname      # 查看修改結(jié)果
k8s-master

# 配置 hosts 文件
www@k8s-master:~$  cat <<EOF | sudo tee  /etc/hosts
192.168.36.213  k8s-master
192.168.36.141  k8s-node1
192.168.36.188  k8s-node2
EOF

# 互相 ping 通
www@k8s-master:~$ ping 192.168.36.188
PING 192.168.36.188 (192.168.36.188) 56(84) bytes of data.
64 bytes from 192.168.36.188: icmp_seq=1 ttl=64 time=0.511 ms
64 bytes from 192.168.36.188: icmp_seq=2 ttl=64 time=0.323 ms
# 禁用交換分區(qū)
www@k8s-master:~$ sudo swapoff -a
# 永久禁用,打開/etc/fstab注釋掉swap那一行立磁。
www@k8s-master:~$ sed -i 's/.*swap.*/#&/' /etc/fstab

# 設(shè)置系統(tǒng)時區(qū)為中國/上海(同步系統(tǒng)時區(qū))
www@k8s-master:~$ sudo timedatectl set-timezone Asia/Shanghai

允許 iptables 檢查橋接流量

確保 br_netfilter 模塊被加載呈队。這一操作可以通過運行 lsmod | grep br_netfilter 來完成。若要顯式加載該模塊唱歧,可執(zhí)行 sudo modprobe br_netfilter宪摧。

為了讓你的 Linux 節(jié)點上的 iptables 能夠正確地查看橋接流量,你需要確保在你的 sysctl 配置中將 net.bridge.bridge-nf-call-iptables 設(shè)置為 1

www@k8s-master:~$ cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF

www@k8s-master:~$ cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
www@k8s-master:~$ sudo sysctl --system

安裝 Docker

參見 Debian11安裝docker

安裝 kubeadm颅崩、kubelet 和 kubectl

參考 安裝-kubeadm-kubelet-和-kubectl

  • 更新 apt 包索引并安裝使用 Kubernetes apt 倉庫所需要的包:
www@k8s-master:~$ sudo apt-get update
www@k8s-master:~$ sudo apt-get install -y apt-transport-https ca-certificates curl
  • 下載 kubernetes 簽名秘鑰:
    由于官方 k8s 源在 google几于,國內(nèi)無法訪問,這里使用阿里云yum源
www@k8s-master:~$ curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - 
  • 添加 Kubernetes apt 倉庫:
www@k8s-master:~$ cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF 
  • 更新 apt 包索引沿后,安裝 kubelet沿彭、kubeadm 和 kubectl,并鎖定其版本:
www@k8s-master:~$ sudo apt-get update
www@k8s-master:~$ sudo apt-get install -y kubelet kubeadm kubectl

防止版本誤差太大出問題尖滚,鎖定版本

www@k8s-master:~$ sudo apt-mark hold kubelet kubeadm kubectl

添加開機啟動

www@k8s-master:~$ sudo systemctl enable kubelet.service
www@k8s-master:~$ sudo systemctl start kubelet.service

---------------以上使用 master 節(jié)點進行演示查看喉刘,其他節(jié)點操作均一致--------------------

部署 kubernetes Master

在 master(192.168.36.213)節(jié)點上執(zhí)行:
kubeadm init 命令參考

  • --kubernetes-version — 制定當前 kubernetes 版本
  • --image-repository — 選擇用于拉取控制平面鏡像的容器倉庫
  • apiserver-advertise-address — API 服務(wù)器所公布的其正在監(jiān)聽的 IP 地址,即 Master 主機地址
  • --service-cidr — 為服務(wù)的虛擬 IP 地址另外指定 IP 地址段漆弄,默認值:"10.96.0.0/12"
  • --pod-network-cidr — 指明 pod 網(wǎng)絡(luò)可以使用的 IP 地址段睦裳。如果設(shè)置了這個參數(shù),控制平面將會為每一個節(jié)點自動分配 CIDRs撼唾。
www@k8s-master:~$ sudo kubeadm init \
    --kubernetes-version=1.23.1 \
    --image-repository registry.aliyuncs.com/google_containers \
    --apiserver-advertise-address=192.168.36.213 \
    --service-cidr=10.245.0.0/12 \
    --pod-network-cidr=10.244.0.0/16

上面安裝完后廉邑,會提示你輸入如下命令,按順序執(zhí)行即可倒谷。

Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

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

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 192.168.36.213:6443 --token vhglgq.vunh0rsxz8nlzcd1 \
        --discovery-token-ca-cert-hash sha256:e0f8afa923d79d6da38394b0e9fbdb70cd9c67d86df39487146d406bb023a42b 

在 ndoe 節(jié)點分別執(zhí)行這個命令:

www@k8s-master:~$ sudo kubeadm join 192.168.36.213:6443 --token vhglgq.vunh0rsxz8nlzcd1 \
        --discovery-token-ca-cert-hash sha256:e0f8afa923d79d6da38394b0e9fbdb70cd9c67d86df39487146d406bb023a42b 

默認 token 有效期為24小時蛛蒙,當過期之后,該token就不可用了渤愁。這時就需要重新創(chuàng)建 token宇驾,操作如下:

www@k8s-master:~$ sudo kubeadm token create --print-join-command

上述操作成功之后回到 Master 節(jié)點,運行 kubectl get nodes 命令查看:

www@k8s-master:~$ sudo kubectl get nodes
NAME         STATUS     ROLES                  AGE     VERSION
k8s-master   NotReady   control-plane,master   4m56s   v1.23.1
k8s-node1    NotReady   <none>                 13s     v1.23.1
k8s-node2    NotReady   <none>                 21s     v1.23.1

安裝 CNI 網(wǎng)絡(luò)插件

此時猴伶,雖然 Maste 節(jié)點可以檢測到 node 節(jié)點课舍,但 STATUS 都還是 NotReady 狀態(tài)塌西,這里需要看裝 CNI節(jié)點來實現(xiàn)網(wǎng)絡(luò)訪問。Kubernetes 的網(wǎng)絡(luò)模型選擇

  • 安裝 calico 插件
# 這里選擇的是 calico 插件
www@debian:~$ sudo kubectl apply -f https://docs.projectcalico.org/v3.20/manifests/calico.yaml 
  • 驗證結(jié)果
www@debian:~$ sudo kubectl get pods --all-namespaces
NAMESPACE     NAME                                       READY   STATUS             RESTARTS       AGE
kube-system   calico-kube-controllers-7c8984549d-pt78g   1/1     Running            0              24m
kube-system   calico-node-jkbvn                          1/1     Running            0              24m
kube-system   calico-node-txj79                          1/1     Running            0              24m
kube-system   calico-node-vm8wm                          1/1     Running            0              24m
kube-system   coredns-6d8c4cb4d-7bz8d                    1/1     Running            0              17h
kube-system   coredns-6d8c4cb4d-w2qbx                    1/1     Running            0              17h
kube-system   etcd-k8s-master                            1/1     Running            2 (13h ago)    17h
kube-system   kube-apiserver-k8s-master                  1/1     Running            2 (13h ago)    17h
kube-system   kube-controller-manager-k8s-master         1/1     Running            2 (13h ago)    17h
kube-system   kube-proxy-5brbs                           1/1     Running            1 (13h ago)    17h
kube-system   kube-proxy-dmg62                           1/1     Running            1 (13h ago)    17h
kube-system   kube-proxy-rc6ww                           1/1     Running            1 (13h ago)    17h
kube-system   kube-scheduler-k8s-master                  1/1     Running            2 (13h ago)    17h
  • 再次運行 kubectl get nodes 命令查看節(jié)點狀態(tài):
www@k8s-master:~$ sudo kubectl get nodes
NAME         STATUS   ROLES                  AGE   VERSION
k8s-master   Ready    control-plane,master   17h   v1.23.1
k8s-node1    Ready    <none>                 17h   v1.23.1
k8s-node2    Ready    <none>                 17h   v1.23.1

各個節(jié)點狀態(tài)已就緒

測試 kubernetes 集群

  • 拉取一個nginx鏡像筝尾,并創(chuàng)建 nginx Pod
www@k8s-master:~$ sudo kubectl create deployment nginx --image=nginx
  • 查看 nginx Pod 狀態(tài):當 STATUSRunning 即表示創(chuàng)建完成
www@k8s-master:~$ sudo kubectl get pod
NAME                     READY   STATUS              RESTARTS   AGE
nginx-85b98978db-gszf4   0/1     ContainerCreating   0          37s
www@k8s-master:~$ sudo kubectl get pod
NAME                     READY   STATUS    RESTARTS   AGE
nginx-85b98978db-gszf4   1/1     Running   0          4m28s
  • 對外暴露 nginx 端口
www@k8s-master:~$ sudo kubectl expose deployment nginx --port=80 --type=NodePort
service/nginx exposed
  • 查看對外暴露端口狀態(tài)
www@k8s-master:~$ sudo kubectl get pod,svc
NAME                         READY   STATUS    RESTARTS   AGE
pod/nginx-85b98978db-gszf4   1/1     Running   0          8m55s

NAME                 TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
service/kubernetes   ClusterIP   10.240.0.1       <none>        443/TCP        18h
service/nginx        NodePort    10.255.117.143   <none>        80:32224/TCP   107s
  • 在外網(wǎng)中以任一 node(192.168.36.141捡需、192.168.36.188) 節(jié)點加上對外暴露端口 32224訪問可以看到如下結(jié)果:
    image.png

至此,一個簡單的 k8s 集群系統(tǒng)安裝筹淫、測試完成站辉。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末橱野,一起剝皮案震驚了整個濱河市常侦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蒋歌,老刑警劉巖摧阅,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件汰蓉,死亡現(xiàn)場離奇詭異,居然都是意外死亡棒卷,警方通過查閱死者的電腦和手機顾孽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來比规,“玉大人若厚,你說我怎么就攤上這事⊙咽玻” “怎么了测秸?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長灾常。 經(jīng)常有香客問我霎冯,道長,這世上最難降的妖魔是什么岗憋? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮锚贱,結(jié)果婚禮上仔戈,老公的妹妹穿的比我還像新娘。我一直安慰自己拧廊,他們只是感情好监徘,可當我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著吧碾,像睡著了一般凰盔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上倦春,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天户敬,我揣著相機與錄音落剪,去河邊找鬼。 笑死尿庐,一個胖子當著我的面吹牛忠怖,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播抄瑟,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼凡泣,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了皮假?” 一聲冷哼從身側(cè)響起鞋拟,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎惹资,沒想到半個月后贺纲,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡布轿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年哮笆,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片汰扭。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡稠肘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出萝毛,到底是詐尸還是另有隱情项阴,我是刑警寧澤,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布笆包,位于F島的核電站环揽,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏庵佣。R本人自食惡果不足惜歉胶,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望巴粪。 院中可真熱鬧通今,春花似錦、人聲如沸肛根。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽派哲。三九已至臼氨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間芭届,已是汗流浹背储矩。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工感耙, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人椰苟。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓抑月,卻偏偏與公主長得像,于是被迫代替她去往敵國和親舆蝴。 傳聞我的和親對象是個殘疾皇子谦絮,可洞房花燭夜當晚...
    茶點故事閱讀 43,440評論 2 348

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