摘要:在容器領(lǐng)域內(nèi),已毋庸置疑成為了容器編排和管理的社區(qū)標準??蛻舳藷o需連接到每個的,而是直接連接負載均衡器的地址。通過這樣的操作,使用持續(xù)交付和部署方法論的快速開發(fā)和部署周期將會成為常態(tài)。
在容器領(lǐng)域內(nèi),Kubernetes已毋庸置疑成為了容器編排和管理的社區(qū)標準。如果你希望你所搭建的應(yīng)用程序能充分利用多云(multi-cloud)的優(yōu)勢,有一些與Kubernetes網(wǎng)絡(luò)相關(guān)的基本內(nèi)容是你必須了解與考慮的。
Kubernetes網(wǎng)絡(luò)基本的部署調(diào)度單元:PodKubernetes中的基本管理單元并非是一個容器,而是一個叫做pod的東西。我們認為部署了一個或多個容器的環(huán)境是一個pod單元。通常情況下,它們代表了提供部分服務(wù)的單個功能端點。
舉兩個有效的pods單元為例:
數(shù)據(jù)庫pod -- 一個單一MySQL容器
Web pod -- 包含一個python實例的容器及包含Redis數(shù)據(jù)庫的容器
pods具有以下常用的特性:
它們共享資源 -- 包括了網(wǎng)絡(luò)棧和命名空間
pod包含了一個IP地址,用于客戶端連接
pod的配置定義了任意公共端口以及哪個容器占用該端口
pod中的全部容器可以通過網(wǎng)絡(luò)中的任意端口進行交互(這些容器都會被本地引用,因此需要確保pod中的服務(wù)都有唯一的端口)
Kubernetes服務(wù)(Kubernetes Services)Kubernetes服務(wù)位于負載均衡器之后,負責管理多個相同的pods??蛻舳藷o需連接到每個pod的IP,而是直接連接負載均衡器的IP地址。Kubernetes服務(wù)會將你的應(yīng)用程序定義為一個服務(wù),使得Kubernetes可以根據(jù)定義的規(guī)則和實際可用資源動態(tài)擴展pod數(shù)量。
若想要應(yīng)用程序被Kubernetes基礎(chǔ)設(shè)施外部的客戶端訪問到,唯一的方法是將應(yīng)用程序定義為服務(wù)的一部分。無論你是否擴展節(jié)點,都需要Kubernetes服務(wù)分配外部IP地址。
標簽(Labels)標簽是Kubernetes中一組作用于對象(如pods)的鍵值對,需要具有實際意義且有相關(guān)性。
在Kubernetes的標準配置中,標簽并不直接影響與Kubernetes相關(guān)的核心操作,而是主要用于對對象的分組和識別。
網(wǎng)絡(luò)安全(Network Security)下面我們將介紹一些Kubernetes推薦使用的網(wǎng)絡(luò)插件,這些插件用到了我們上一節(jié)提到的標簽。利用標簽,它們可以在容器運行時改變某些功能。在Kubernetes中,大多數(shù)使用的網(wǎng)絡(luò)插件都是基于容器網(wǎng)絡(luò)接口(Container Networking Interface ,CNI)規(guī)范,這項規(guī)范由Cloud Native Computing Foundation(CNCF)制定。CNI允許在多個容器平臺中使用相同的網(wǎng)絡(luò)插件?,F(xiàn)在我們使用一種調(diào)整網(wǎng)絡(luò)安全策略的方法,該方法并不像傳統(tǒng)的網(wǎng)絡(luò)或者安全團隊模型那樣預先設(shè)置好一切,而是在容器運行時,利用標簽來調(diào)整正確的網(wǎng)絡(luò)策略(容器的動態(tài)變化太過頻繁,很難進行手動干預),目前該方法已經(jīng)成為了 Kubernetes Network Special Internet Group(Network SIG)的一部分。如今,我們已經(jīng)有多個可供使用的網(wǎng)絡(luò)插件能夠?qū)⒕W(wǎng)絡(luò)策略應(yīng)用于命名空間和pods中,這其中包括OpenContrail 和 Project Calico。
通過這種新方法,Kubernetes管理員可以導入所有預先準備的策略,開發(fā)者負責調(diào)整并根據(jù)需求自主選擇策略,而所有這一切都會定義到pod中執(zhí)行。
網(wǎng)絡(luò)策略示例:
POST /apis/net.alpha.kubernetes.io/v1alpha1/namespaces/tenant-a/networkpolicys/ { "kind": "NetworkPolicy", "metadata": { "name": "pol1" }, "spec": { "allowIncoming": { "from": [ { "pods": { "segment": "frontend" } } ], "toPorts": [ { "port": 80, "protocol": "TCP" } ] }, "podSelector": { "segment": "backend" } } }
有網(wǎng)絡(luò)策略定義的pod配置示例:
apiVersion: v1 kind: Pod metadata: name: nginx labels: app: nginx segment: frontend spec: containers: - name: nginx image: nginx ports: - containerPort: 80結(jié)論
有了Kubernetes提供的功能,開發(fā)者現(xiàn)在擁有了完全定義應(yīng)用程序及其依賴性所需的靈活性,并且可以在單個pod中使用多個容器。如果任何一個容器發(fā)生錯誤,Kubernetes能夠確保將其對應(yīng)的pod停用,自動用新的pod替換。此外,開發(fā)者還可以定義應(yīng)用程序或者服務(wù)偵聽的端口號,無論它是較大服務(wù)的一部分,或僅僅是一個獨立實例。通過這樣的操作,使用持續(xù)交付和部署方法論的快速開發(fā)和部署周期將會成為常態(tài)。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/27061.html
摘要:在容器領(lǐng)域內(nèi),已毋庸置疑成為了容器編排和管理的社區(qū)標準??蛻舳藷o需連接到每個的,而是直接連接負載均衡器的地址。通過這樣的操作,使用持續(xù)交付和部署方法論的快速開發(fā)和部署周期將會成為常態(tài)。 在容器領(lǐng)域內(nèi),Kubernetes已毋庸置疑成為了容器編排和管理的社區(qū)標準。如果你希望你所搭建的應(yīng)用程序能充分利用多云(multi-cloud)的優(yōu)勢,有一些與Kubernetes網(wǎng)絡(luò)相關(guān)的基本內(nèi)容是你...
摘要:在容器領(lǐng)域內(nèi),已毋庸置疑成為了容器編排和管理的社區(qū)標準??蛻舳藷o需連接到每個的,而是直接連接負載均衡器的地址。通過這樣的操作,使用持續(xù)交付和部署方法論的快速開發(fā)和部署周期將會成為常態(tài)。 在容器領(lǐng)域內(nèi),Kubernetes已毋庸置疑成為了容器編排和管理的社區(qū)標準。如果你希望你所搭建的應(yīng)用程序能充分利用多云(multi-cloud)的優(yōu)勢,有一些與Kubernetes網(wǎng)絡(luò)相關(guān)的基本內(nèi)容是你...
閱讀 2349·2021-11-24 09:39
閱讀 3794·2021-11-19 09:40
閱讀 2166·2021-09-27 13:36
閱讀 1907·2019-08-30 15:44
閱讀 404·2019-08-30 13:52
閱讀 2720·2019-08-30 11:13
閱讀 2202·2019-08-29 16:18
閱讀 1768·2019-08-29 15:43