日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

真快!10秒内将k8s集群运行起来

發布時間:2023/12/4 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 真快!10秒内将k8s集群运行起来 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

大家好,我是小碗湯,今天演示一個項目,可以在一分鐘內用容器將k8s集群運行起來,真的很方便。

您可能已經知道,將 Kubernetes 集群安裝在 VM 上。但在 Docker 容器中安裝一個 Kubernetes 集群,還沒有太多的實踐。

本文我將簡要演示如何在 Docker 容器中創建 Kubernetes 集群。如果你想看細節,可以查看 GitHub倉庫[1]

創建集群

下載腳本

git?clone?--depth=1?[https://github.com/ManasPecenek/clinco.git](https://github.com/ManasPecenek/clinco.git?"https://github.com/ManasPecenek/clinco.git")?&&?cd?clinco?&&?chmod?+x?initial-script.sh?add-worker.sh

查看目錄結構

#?ls? add-worker.sh??initial-script.sh??LICENSE??master?image??README.md??worker?image

現在您可以設置工作節點數,然后運行腳本。例如./initial-script.sh 1將產生一個 worker-node 集群:

./initial-script.sh?<worker-node-count>

稍等片刻,即可看到1 master 1 worker集群創建好了:

#?docker?ps?-a CONTAINER?ID???IMAGE??????????????????????????????COMMAND????????CREATED??????????STATUS??????????PORTS??????????????????????????????????????????????????????????????????????????NAMES 7521c916e92e???petschenek/ubuntu-systemd:worker???"/sbin/init"???11?minutes?ago???Up?11?minutes??????????????????????????????????????????????????????????????????????????????????worker-1 a2e5bcf92c92???petschenek/ubuntu-systemd:master???"/sbin/init"???15?minutes?ago???Up?15?minutes???0.0.0.0:80->80/tcp,?:::80->80/tcp,?0.0.0.0:6443->6443/tcp,?:::6443->6443/tcp???master

master會將80、6443端口映射到宿主機上。

我們將容器中的kubectl命令復制到宿主機上,方便操作:

#?docker?cp?master:/usr/local/bin/kubectl?/usr/local/bin/

在clinco目錄中默認存在了admin.kubeconfig文件,我們查看集群:

#?kubectl?get?nodes?-o?wide?--kubeconfig?admin.kubeconfig NAME???????STATUS???ROLES????AGE???VERSION???INTERNAL-IP???EXTERNAL-IP???OS-IMAGE???????KERNEL-VERSION????????????????CONTAINER-RUNTIME worker-1???Ready????<none>???29m???v1.21.0???172.172.1.1???<none>????????Ubuntu?21.10???3.10.0-1160.31.1.el7.x86_64???containerd://1.5.8#?kubectl?cluster-info?--kubeconfig?admin.kubeconfig Kubernetes?control?plane?is?running?at?https://127.0.0.1:6443To?further?debug?and?diagnose?cluster?problems,?use?'kubectl?cluster-info?dump'.

添加工作節點

運行下面的腳本,例如./add-worker.sh 1 將向現有集群添加1個工作節點:

./add-worker.sh?<worker-node-count>

查看添加的節點:

#?docker?ps?-a CONTAINER?ID???IMAGE??????????????????????????????COMMAND????????CREATED??????????STATUS??????????PORTS??????????????????????????????????????????????????????????????????????????NAMES bfc68af79191???petschenek/ubuntu-systemd:worker???"/sbin/init"???14?seconds?ago???Up?13?seconds??????????????????????????????????????????????????????????????????????????????????worker-2 7521c916e92e???petschenek/ubuntu-systemd:worker???"/sbin/init"???33?minutes?ago???Up?33?minutes??????????????????????????????????????????????????????????????????????????????????worker-1 a2e5bcf92c92???petschenek/ubuntu-systemd:master???"/sbin/init"???36?minutes?ago???Up?36?minutes???0.0.0.0:80->80/tcp,?:::80->80/tcp,?0.0.0.0:6443->6443/tcp,?:::6443->6443/tcp???master

稍等片刻,節點會變成Ready:

#?kubectl?get?nodes?-o?wide?--kubeconfig?admin.kubeconfig NAME???????STATUS???ROLES????AGE???VERSION???INTERNAL-IP???EXTERNAL-IP???OS-IMAGE???????KERNEL-VERSION????????????????CONTAINER-RUNTIME worker-1???Ready????<none>???33m???v1.21.0???172.172.1.1???<none>????????Ubuntu?21.10???3.10.0-1160.31.1.el7.x86_64???containerd://1.5.8 worker-2???Ready????<none>???38s???v1.21.0???172.172.1.2???<none>????????Ubuntu?21.10???3.10.0-1160.31.1.el7.x86_64???containerd://1.5.8

為了方便,可以設置環境變量,或者將admin.kubeconfig復制到~/.kube/config文件中,這里設置個KUBECONFIG環境變量:

export?KUBECONFIG=admin.kubeconfig

部署服務

部署2個實例的nginx deployment做測試:

kubectl?create?deploy?nginx?--image?nginx?--replicas?4

稍等片刻即可啟動成功:

#?kubectl??get?pod??-o?wide NAME?????????????????????READY???STATUS??????????????RESTARTS???AGE?????IP???????NODE???????NOMINATED?NODE???READINESS?GATES nginx-6799fc88d8-b5xhx???1/1?????Running???0??????????2m10s???<none>???worker-2???<none>???????????<none> nginx-6799fc88d8-ch2x9???1/1?????Running???0??????????2m10s???<none>???worker-2???<none>???????????<none>

修復集群

如果使用delete node命令刪除節點后,例如:

kubectl??delete?node?worker-2

則直接執行以下命令重啟容器即可:

docker?restart?worker-2

如果容器被刪除,刪除的是主節點,想恢復集群,可以運行以下命令:

#?docker?stop?master?;?docker?rm?master #?docker?run?-dt?--network?clinco?--hostname?master?--name?master?-v?master:/root?-v?etcd:/lib/etcd?-v?/sys/fs/cgroup:/sys/fs/cgroup:ro?--ip=172.172.0.1?-p?6443:6443?-p?80:80?--privileged?--user?root?petschenek/ubuntu-systemd:master?&&?docker?exec?-it?--privileged?--user?root?master?bash?-c?"./master.sh"

如果容器被刪除,刪除的是工作節點之一(例如worker-2),可以運行以下命令來重新創建:

#?docker?stop?worker-2?;?docker?rm?worker-2 #?j=2?&&?docker?run?-dt?--network?clinco?--hostname?worker-$j?--name?worker-$j?-v?/lib/modules:/lib/modules:ro?-v?worker-$j:/root?-v?/sys/fs/cgroup:/sys/fs/cgroup:ro?--ip=172.172.0.$j?--privileged?--user?root?petschenek/ubuntu-systemd:worker?&&?docker?exec?-it?--privileged?--user?root?worker-$j?bash?-c?"./worker.sh"

原理

其實在master node容器中運行了系統組件:

#?docker?exec?-ti?master?ps?-ef??|?grep?kube root????????1452???????1??3?13:10??????????00:01:33?/usr/local/bin/kube-apiserve root????????1453???????1??0?13:10??????????00:00:21?/usr/local/bin/kube-controll root????????1454???????1??0?13:10??????????00:00:05?/usr/local/bin/kube-schedule #?docker?exec?-ti?master?ps?-ef??|?grep?etcd root????????1367???????1??1?13:10??????????00:00:29?/usr/local/bin/etcd?--name?m

在worker node容器中運行了kubelet:

#?docker?exec?-ti?worker-1?ps?-ef??|?grep?kubelet root?????????980???????1??0?13:11??????????00:00:20?/usr/local/bin/kubelet?--con#?docker?exec?-ti?worker-2?ps?-ef??|?grep?kubelet root?????????981???????1??0?13:44??????????00:00:05?/usr/local/bin/kubelet?--con

因為在master node容器中沒有運行kubelet,所以查看node時看不到master。

容器網絡都為clinco模式:

#?docker?network??ls?-f?name=clinco NETWORK?ID?????NAME??????DRIVER????SCOPE 5d018b1d9b06???clinco????bridge????local#?docker?inspect?master?|?grep?NetworkMode"NetworkMode":?"clinco", #?docker?inspect?worker-1?|?grep?NetworkMode"NetworkMode":?"clinco", #?docker?inspect?worker-2?|?grep?NetworkMode"NetworkMode":?"clinco",

數據也是掛載到宿主機上的:

#?docker?volume?ls?-f?name=etcd DRIVER????VOLUME?NAME local?????etcd

總結

這里用到兩個鏡像(master、worker各一個),我們可以在10秒內輕松裝好一個 Kubernetes 集群,平時測試用起來將變得方便快捷。

參考

[1]

GitHub倉庫: https://github.com/ManasPecenek/clinco

點個在看你最好看

總結

以上是生活随笔為你收集整理的真快!10秒内将k8s集群运行起来的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。