由于k8s對硬件要求比較苛刻,所以咱們使用k3s來模擬練習
下面是k3s的中文官網(wǎng)
docs.k3s.io/zh

使用k3s前需要在服務(wù)器上先安裝一個k3s腳本
咱們這里購買了三臺阿里的服務(wù)器



到這里是安裝完成,那么為什么要三臺服務(wù)器呢,因為咱們要做的不是單節(jié)點操作而是集群。在k3s官網(wǎng)下面還有一串命令。

咱們一開始在ss1服務(wù)器上安裝腳本是來用做管理集群,當然可能會有個問題,那ss1算不算上的是一個節(jié)點呢?一個肯定的回答,算!
但是是不合理的,比如來說你是一個公司的老板,你平時的工作就是來管理手里的員工,難道你不可以來做員工的工作嗎?可以,但是沒有必要,你一邊來管理員工,一邊來做工作,你這個人壓力肯定就非常大,反過來說對服務(wù)器的配置肯定要求就比較高了。
那么先來開始部署集群

咱們復制過來需要改倆點,在這個myserver,改成ss1的私網(wǎng)ip,k3stoken這里需要改成/var/lib/rancher/k3s/server/node-token這個路徑下的密鑰
linux的查詢文件命令是cat,也就是cat?/var/lib/rancher/k3s/server/node-token。
改完運行就歐克了,兩臺服務(wù)器同理。

由于我做的是個集群項目,接下來忽略手敲命令的方式,使用更簡單的配置文件的方式需要用我們的vscode工具。

為什么簡單就在這,有提示,代碼就好敲的多。
還需要連接服務(wù)器的插件

連接上服務(wù)器后新建一個文件夾,來做為咱們的工作區(qū)。

然后進入文件夾,新建一個deploy.yaml配置文件

其中metadata的name是指對象的名稱,也就是咱們的名稱是spring
而spec 是一個縮寫,代表了一個 Kubernetes 對象的規(guī)范(specification)。每個 Kubernetes 對象都有一個 spec 部分,用于定義對象的期望狀態(tài)和行為。
通常,spec 部分會包含對象的各種配置信息,比如容器鏡像、副本數(shù)、資源限制、標簽選擇器、服務(wù)端口、持久化存儲、容器重啟策略等等。這些配置信息可以幫助 Kubernetes 管理容器化應用程序的部署、伸縮、擴展、升級和故障恢復等方面的任務(wù)。
replicas就是副本數(shù),我這里設(shè)置為3因為是集群嘛,多設(shè)置幾個效果比較直觀。
selector 是一個用于選擇 Kubernetes 對象的標簽的機制
通過 Deployment 對象的 selector,可以選擇一組符合特定標簽的 Pod 對象,并在它們上面執(zhí)行伸縮、升級、回滾等操作。
通過 Service 對象的 selector,可以將一組符合特定標簽的 Pod 對象組成一個服務(wù),并為它們提供一個唯一的 IP 地址和端口號,以便其他對象可以通過這個 IP 地址和端口號來訪問這個服務(wù)。
template 是一個用于定義 Pod 模板的部分,用于指定創(chuàng)建新 Pod 的規(guī)范和配置信息。template 通常作為 Kubernetes 對象的 spec 部分的子部分,用于創(chuàng)建和管理 Pod。
在一個 Kubernetes 對象的 template 部分中,通常會包含以下配置信息:
metadata:Pod 對象的元數(shù)據(jù),包括名稱、標簽等等。
spec:Pod 對象的規(guī)范,包括容器鏡像、容器端口、資源限制、環(huán)境變量等等。
template 的作用是為 Kubernetes 提供一種靈活的方式來創(chuàng)建和管理多個 Pod。當 Kubernetes 管理器需要創(chuàng)建新的 Pod 時,它會根據(jù) template 的定義來創(chuàng)建新的 Pod,并根據(jù) Pod 的標簽和 selector 來進行管理和操作。
image后面就是我鏡像倉庫的位置,我寫了一個后端用docker上傳到我的阿里鏡像倉庫上
ports就是我鏡像的端口3000

隨后運行這個配置文件,發(fā)現(xiàn)有三個pod說成功了

spec的type提供了節(jié)點暴露的服務(wù),用于之后用服務(wù)器的公網(wǎng)IP來看效果。
該服務(wù)將端口3001公開,并將流量轉(zhuǎn)發(fā)到目標端口3000。它還指定將節(jié)點端口(nodePort)設(shè)置為30002,這意味著可以通過訪問節(jié)點的IP地址和端口30002來訪問該服務(wù)。
運行一下后 get到私網(wǎng)ip和公開端口

使用curl測試一下用私網(wǎng)ip和公開的端口跟上我后端的info路徑發(fā)現(xiàn)成功
在橫線前面是當前的主機橫線后面exec是我的線程,可以看到我多次訪問線程在變化而主機沒變,這是因為我還沒在阿里云做slb當前只在這一臺主機跑我的鏡像

接下來做的就是slb(負載均衡)

將三臺服務(wù)器創(chuàng)建成一個服務(wù)器組,并將端口設(shè)置成節(jié)點端口(nodePort)30002


監(jiān)聽完成后就這個demo就做完了,因為游覽器機制,運行效果不直觀,所以我用的是http請求效果如下:



一共是三臺主機,這個小項目就成了。
接下來是一些命令,怕我自己記不住
crictl images 因為是k3s不是docker所以無法用docker命令來查看鏡像但是k3s本身有容器技術(shù)所以這個命令就是來看服務(wù)器鏡像的

kubectl delete deploy/ng-deploy? 這個就是刪除一個對象在斜線前面就是對象的類型通常就是pod service deploy 后面就名字了選擇類型選擇類型對象的名字
kubectl create deploy ng-deploy 創(chuàng)建一個名字為ng-deploy的deploy
--image={鏡像路徑}測試可用nginx
kubectl run ss --image=nginx 創(chuàng)建一個名字為ss的pod對象
kubectl scale --replicas=4 deploy/ng-deploy 給一個對象類型為deploy名字為ng-deploy的副本添加到4個
kubectl expose deploy ng-deploy --port=3000 --target-port=80 --type=NodePort??給一個對象類型為deploy名字為ng-deploy的公開端口設(shè)置為3000,目標端口設(shè)置為80
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 《Kubernetes權(quán)威指南:從Docker到Kubernetes實踐全接觸(第4版)》 作者 龔正等 1.3 ...
- 下內(nèi)容整理自這本書的讀書筆記:《Kubernetes權(quán)威指南:從Docker到Kubernetes實踐全接觸(第4...
- 1.kubernetes 集群升級; 2.總結(jié)yaml文件 3.etcd客戶端使用、數(shù)據(jù)備份和恢復; 4.kube...
- Boogie Software是歐洲著名的金融科技公司,多年來致力于為銀行提供Fintech、AI、大數(shù)據(jù)高性能后...