偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

徹底搞懂K8S相關(guān)知識

云計(jì)算 云原生
K8S,它的全稱,是kubernetes,Kubernetes 這個單詞來自于希臘語,含義是舵手或領(lǐng)航員。K8S是它的縮寫,用“8”字替代了“ubernete”這8個字符,所有我們一般都會叫它k8s,和Docker不同,K8S的創(chuàng)造者,是大名鼎鼎行業(yè)巨頭谷歌,K8S并不是一件全新的發(fā)明。

相信很多人對他的名字都不陌生,但是很多人卻把他和docker相關(guān)的關(guān)系分不清,也沒有搞懂它到底是用來做什么的,能幫助我們解決哪些問題,今天我就給大家詳細(xì)的講一下。

K8S,它的全稱,是kubernetes,Kubernetes 這個單詞來自于希臘語,含義是舵手或領(lǐng)航員。K8S是它的縮寫,用“8”字替代了“ubernete”這8個字符,所有我們一般都會叫它k8s,和Docker不同,K8S的創(chuàng)造者,是大名鼎鼎行業(yè)巨頭谷歌,K8S并不是一件全新的發(fā)明。它的前身,是Google自己搗鼓了十多年的Borg系統(tǒng),K8S是2014年6月由Google公司正式公布出來并宣布開源的。

k8s和docker有什么關(guān)系

我們都知道隨著docker人氣迅速攀升,越來越多的公司和開發(fā)者都把自己公司的業(yè)務(wù)遷移到docker容器平臺,這樣以來很多人就發(fā)現(xiàn)一個問題,自己公司業(yè)務(wù)一臺docker容器根本沒有辦法滿足當(dāng)前需求,這時候我們首先想到的就是增加服務(wù)器,在每臺服務(wù)器都安裝docker容器,如果你的服務(wù)拆分不是很多這樣的確可以解決當(dāng)前問題,但是如果有上百個微服務(wù),你還是用以前方式管理docker那就非常吃力了,這時候我們可能會想,有沒有一款能把所有docker容器進(jìn)行統(tǒng)一管理的平臺,沒錯k8s是為容器服務(wù)而生的一個可移植容器的編排管理工具,越來越多的公司正在擁抱k8s,并且當(dāng)前k8s已經(jīng)主導(dǎo)了云業(yè)務(wù)流程,推動了微服務(wù)架構(gòu)等熱門技術(shù)的普及和落地。

說白了k8s就是用來管理docker容器的,以前我們運(yùn)行一個容器都是直接調(diào)用docker創(chuàng)建容器的,這樣以來隨著docker實(shí)力越來越多我們維護(hù)就非常困難了,假設(shè)我現(xiàn)在有30多個服務(wù),如果沒有用容器編排工具我們就需要自己計(jì)算每個服務(wù)占用多少空間,一個docker容器部署多少個服務(wù),這些都是需要提前計(jì)算好的,但是隨著我們系統(tǒng)訪問量不斷增加,可能以前只4g運(yùn)行內(nèi)存的現(xiàn)在可能需要調(diào)整到8g,那以前節(jié)點(diǎn)明顯就不夠用了,我們就需要手動部署到新機(jī)器上去,如果你使用了k8s,你只需要把新的節(jié)點(diǎn)加入k8s集群,剩下的工作就都是交給k8s來幫你完成了。

k8s能幫我們做什么

版本回退

我們都知道只要是程序就可能存在bug,如果發(fā)現(xiàn)新發(fā)布的程序版本有問題,我們可以立即回退到原來的版本。

服務(wù)自愈

k8s默認(rèn)會有監(jiān)控檢查機(jī)制,說白了就是不斷的curl你服務(wù)的端口發(fā)現(xiàn)不通或者其他異常問題,一旦某一個容器崩潰,能夠快速速啟動新的容器。

彈性伸縮

當(dāng)我們某個服務(wù)訪問量比較高的時候發(fā)現(xiàn)一個節(jié)點(diǎn)已經(jīng)無法正常處理我們業(yè)務(wù)請求了,我們可以動態(tài)的調(diào)整pod數(shù)量達(dá)實(shí)現(xiàn)擴(kuò)容效果,如果某個服務(wù)訪問不高我們就可以減少pod數(shù)量實(shí)現(xiàn)動態(tài)擴(kuò)容,而且k8s實(shí)現(xiàn)擴(kuò)容和縮容是非常簡單的只需要一條命令即可搞定。

負(fù)載均衡

如果由于某個服務(wù)訪問量比較高,那么相當(dāng)于一個服務(wù)起動了多個容器,如果我們用傳統(tǒng)方式肯定還需要使用nginx相關(guān)的負(fù)載均衡中間件,但是如果使用了k8s能自動實(shí)現(xiàn)請求的負(fù)載均衡。

存儲卷掛載

如果你項(xiàng)目中有使用nfs或者其它文件系統(tǒng)存儲文件,我們可以直接在k8s創(chuàng)建存儲卷掛著nfs了,比較常見的就是我們服務(wù)是微服務(wù)項(xiàng)目我們的文件存儲系統(tǒng)和文件分析系統(tǒng)是兩個服務(wù)這時候我們就可以掛著nfs,兩個服務(wù)使用同一個文件系統(tǒng)效果。

再帶大家認(rèn)識一下k8s基本架構(gòu)

?一個k8s集群主要是由控制節(jié)點(diǎn)(master)、工作節(jié)點(diǎn)(node)構(gòu)成,每個節(jié)點(diǎn)上都會安裝不同的組件。

master節(jié)點(diǎn)主要負(fù)責(zé)集群的管理 ,master節(jié)點(diǎn)包含以下組件。

  • ApiServer : 資源操作的唯一入口,接收用戶輸入的命令,提供認(rèn)證、授權(quán)、API注冊和發(fā)現(xiàn)等機(jī)制。
  • Scheduler : 負(fù)責(zé)集群資源調(diào)度,按照預(yù)定的調(diào)度策略將Pod調(diào)度到相應(yīng)的node節(jié)點(diǎn)上。
  • ControllerManager : 負(fù)責(zé)維護(hù)集群的狀態(tài),比如程序部署安排、故障檢測、自動擴(kuò)展、滾動更新等。
  • Etcd :負(fù)責(zé)存儲集群中各種資源對象的信息。

node節(jié)點(diǎn)負(fù)責(zé)為容器提供運(yùn)行環(huán)境,也就是正在干活的節(jié)點(diǎn)。

  • Kubelet : 負(fù)責(zé)維護(hù)容器的生命周期,即通過控制docker,來創(chuàng)建、更新、銷毀容器
  • KubeProxy : 負(fù)責(zé)提供集群內(nèi)部的服務(wù)發(fā)現(xiàn)和負(fù)載均衡
  • Docker : 負(fù)責(zé)節(jié)點(diǎn)上容器的各種操作

以部署一個Nginx服務(wù)來說明Kubernetes系統(tǒng)各個組件調(diào)用關(guān)系。

  1. 首先需要明確,一旦Kubernetes環(huán)境啟動之后,master和node都會將自身的信息存儲到etcd數(shù)據(jù)庫中。
  2. 一個Nginx服務(wù)的安裝請求首先會被發(fā)送到master節(jié)點(diǎn)上的API Server組件。
  3. API Server組件會調(diào)用Scheduler組件來決定到底應(yīng)該把這個服務(wù)安裝到那個node節(jié)點(diǎn)上。此時,它會從etcd中讀取各個node節(jié)點(diǎn)的信息,然后按照一定的算法進(jìn)行選擇,并將結(jié)果告知API Server。
  4. API Server調(diào)用Controller-Manager去調(diào)用Node節(jié)點(diǎn)安裝Nginx服務(wù)。
  5. Kubelet接收到指令后,會通知Docker,然后由Docker來啟動一個Nginx的Pod。Pod是Kubernetes的最小操作單元,容器必須跑在Pod中。
  6. 一個Nginx服務(wù)就運(yùn)行了,如果需要訪問Nginx,?就需要通過kube-proxy來對Pod產(chǎn)生訪問的代理,這樣,外界用戶就可以訪問集群中的Nginx服務(wù)了

最后我們再來了解一下k8s核心概念

官網(wǎng)提供架構(gòu)圖

Master:集群控制節(jié)點(diǎn),每個集群需要至少一個master節(jié)點(diǎn)負(fù)責(zé)集群的管控。

Node:工作負(fù)載節(jié)點(diǎn),由master分配容器到這些node工作節(jié)點(diǎn)上,然后node節(jié)點(diǎn)上的docker負(fù)責(zé)容器的運(yùn)行。

Pod:kubernetes的最小控制單元,容器都是運(yùn)行在pod中的,一個pod中可以有1個或者多個容器。

Controller:控制器,通過它來實(shí)現(xiàn)對pod的管理,比如啟動pod、停止pod、伸縮pod的數(shù)量等等。

Service:pod對外服務(wù)的統(tǒng)一入口,下面可以維護(hù)者同一類的多個pod。

Label:標(biāo)簽,用于對pod進(jìn)行分類,同一類pod會擁有相同的標(biāo)簽。

NameSpace:命名空間,用來隔離pod的運(yùn)行環(huán)境。

Linux常用命令

查看節(jié)點(diǎn)信息

kubectl get node

namespace創(chuàng)建/刪除

kubectl create ns ${空間名稱}
kubectl delete ns ${空間名稱}

在k8s運(yùn)行pod

Pod運(yùn)行中的一組容器,Pod是kubernetes中應(yīng)用的最小單位。

示例:運(yùn)行一個名稱為nginx,副本數(shù)為3,標(biāo)簽為app=example,鏡像為nginx:1.10,端口為80的容器實(shí)例。

kubectl run nginx --replicas=3 --labels="app=example" --image=nginx:1.10 --port=80

查看容器內(nèi)所有pod

kubectl get pod -A

顯示pod節(jié)點(diǎn)的標(biāo)簽信息

kubectl get pod --show-labels

根據(jù)指定標(biāo)簽匹配到具體的pod

kubectl get pods -l app=example

查看pod創(chuàng)建詳細(xì)過程

kubectl describe pod ${pod名稱} -n ${空間名稱}

查看指定pod的信息

kubectl get pod ${pod名稱} -n ${空間名稱}

查看pod詳細(xì)信息

kubectl get pod -o wide

查看pod日志,其實(shí)就查看服務(wù)本身日志,類似docker logs

kubectl logs ${pod名稱} -n ${空間名稱}

指定時間段輸出日志

kubectl logs ${pod名稱} --since=1h

指定時間戳輸出日志

kubectl logs ${pod名稱} --since-time=2022-12-01T15:00:00Z

進(jìn)入容器里面里面

kubectl exec -ti ${pod名稱} /bin/bash

Service概念

我們已經(jīng)能夠利用Deployment來創(chuàng)建一組Pod來提供具有高可用性的服務(wù),雖然每個Pod都會分配一個單獨(dú)的Pod的IP地址,但是卻存在如下的問題:

Pod的IP會隨著Pod的重建產(chǎn)生變化。

Pod的IP僅僅是集群內(nèi)部可見的虛擬的IP,外部無法訪問。

創(chuàng)建集群內(nèi)部可訪問的Service

kubectl expose deployment xxx --name=服務(wù)名 --type=ClusterIP --port=暴露的端口 --target-port=指向集群中的Pod的端口 [-n 命名空間]。

會產(chǎn)生一個CLUSTER-IP,這個就是service的IP,在Service的生命周期內(nèi),這個地址是不會變化的。

kubectl expose deployment nginx --name=svc-nginx1 --type=ClusterIP --port=80 --target-port=80 -n test

查看Service

kubectl get svg [-n 命名空間] [-o wide]

創(chuàng)建集群外部可訪問的Service

kubectl expose deployment xxx --name=服務(wù)名 --type=NodePort --port=暴露的端口 --target-port=指向集群中的Pod的端口 [-n 命名空間]

kubectl expose deploy nginx --name=svc-nginx2 --type=NodePort --port=80 --target-port=80 -n test

擴(kuò)縮容

kubectl scale --replicas=5 deployment/my-nginx
kubectl edit deployment my-nginx

更新鏡像

將deployment中的nginx容器鏡像設(shè)置為“nginx:1.9.1”。

kubectl set image deployment/nginx busybox=busybox nginx=nginx:1.9.1

版本回退

歷史記錄。

kubectl rollout history deployment ${pod名稱}

查看某個歷史詳情。

kubectl rollout history deployment my-nginx--revision=2

回滾(回到上次)。

kubectl rollout undo deployment ${pod名稱}

回滾(回到指定版本)。

kubectl rollout undo deployment my-nginx--to-revision=2
責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2024-01-26 14:35:03

鑒權(quán)K8sNode

2023-12-01 15:58:00

Kubernetes集群DevOps

2023-09-20 14:30:36

K8s亞馬遜谷歌

2022-04-22 13:32:01

K8s容器引擎架構(gòu)

2022-12-27 14:18:45

K8S命令

2023-11-06 07:16:22

WasmK8s模塊

2023-09-06 08:12:04

k8s云原生

2023-09-21 11:28:28

Kubernetes云原生

2023-08-03 08:36:30

Service服務(wù)架構(gòu)

2023-08-04 08:19:02

2023-05-25 21:38:30

2020-05-12 10:20:39

K8s kubernetes中間件

2022-09-05 08:26:29

Kubernetes標(biāo)簽

2023-07-04 07:30:03

容器Pod組件

2024-06-26 00:22:35

2022-01-11 07:59:15

K8S KubernetesAirflow

2022-08-15 09:49:28

K8s云原生

2023-09-24 22:47:42

Kubernetes親和性

2023-09-03 23:58:23

k8s集群容量

2023-03-05 21:50:46

K8s集群容量
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號