chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

入門炫酷的Kubernetes網絡方案

馬哥Linux運維 ? 來源:MY X FILES ? 作者:MY X FILES ? 2021-10-13 15:19 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

最近業(yè)界使用范圍最廣的K8S CNI網絡方案 Calico 宣布支持 eBPF,而作為第一個通過 eBPF 實現(xiàn)了 kube-proxy 所有功能的 K8S 網絡方案——Cilium,它的先見之名是否能轉成優(yōu)勢,繼而成為 CNI 新的頭牌呢?今天我們一起來入門最 Cool Kubernetes 網絡方案 Cilium。
Cilium介紹
以下基于 Cilium官網文檔翻譯整理。

當前趨勢

現(xiàn)代數據中心的應用系統(tǒng)已經逐漸轉向基于微服務架構的開發(fā)體系,一個微服務架構的應用系統(tǒng)是由多個小的獨立的服務組成,它們之間通過輕量通信協(xié)議如 HTTP、gRPC、Kafka 等進行通信。微服務架構下的服務天然具有動態(tài)變化的特點,結合容器化部署,時常會引起大規(guī)模的容器實例啟動或重啟。要確保這種向高度動態(tài)化的微服務應用之間的安全可達,既是挑戰(zhàn),也是機遇。

現(xiàn)有問題

傳統(tǒng)的 Linux 網絡訪問安全控制機制(如 iptables)是基于靜態(tài)環(huán)境的IP地址和端口配置網絡轉發(fā)、過濾等規(guī)則,但是 IP 地址在微服務架構下是不斷變化的,非固定的;出于安全目的,協(xié)議端口(例如 HTTP 傳輸的 TCP 端口 80)也不再固定用來區(qū)分應用系統(tǒng)。為了匹配大規(guī)模容器實例快速變化的生命周期,傳統(tǒng)網絡技術需要維護成千上萬的負載均衡規(guī)則和訪問控制規(guī)則,并且需要以不斷增長的頻率更新這些規(guī)則,而如果沒有準確的可視化功能,要維護這些規(guī)則也是十分困難,這些對傳統(tǒng)網絡技術的可用性和性能都是極大的挑戰(zhàn)。比如經常會有人對 kube-proxy 基于 iptables 的服務負載均衡功能在大規(guī)模容器場景下具有嚴重的性能瓶頸,同時由于容器的創(chuàng)建和銷毀非常頻繁,基于 IP 做身份關聯(lián)的故障排除和安全審計等也很難實現(xiàn)。

解決方案

Cilium 作為一款 Kubernetes CNI 插件,從一開始就是為大規(guī)模和高度動態(tài)的容器環(huán)境而設計,并且?guī)砹?API 級別感知的網絡安全管理功能,通過使用基于 Linux 內核特性的新技術——BPF,提供了基于 service/pod/container 作為標識,而非傳統(tǒng)的 IP 地址,來定義和加強容器和 Pod 之間網絡層、應用層的安全策略。因此,Cilium 不僅將安全控制與尋址解耦來簡化在高度動態(tài)環(huán)境中應用安全性策略,而且提供傳統(tǒng)網絡第 3 層、4 層隔離功能,以及基于 http 層上隔離控制,來提供更強的安全性隔離。另外,由于 BPF 可以動態(tài)地插入控制 Linux 系統(tǒng)的程序,實現(xiàn)了強大的安全可視化功能,而且這些變化是不需要更新應用代碼或重啟應用服務本身就可以生效,因為 BPF 是運行在系統(tǒng)內核中的。以上這些特性,使 Cilium 能夠在大規(guī)模容器環(huán)境中也具有高度可伸縮性、可視化以及安全性。部署 Cilium部署 Cilium 非常簡單,可以通過單獨的 yaml 文件部署全部組件(目前我使用了這個方式部署了1.7.1 版本),也可以通過 helm chart 一鍵完成。重要的是部署環(huán)境和時機:
  1. 官方建議所有部署節(jié)點都使用 Linux 最新穩(wěn)定內核版本,這樣所有的功能都能啟用,具體部署環(huán)境建議可以參照這里。
  2. 作為一個 Kubernetes 網絡組件,它應該在部署 Kubernetes 其他基礎組件之后,才進行部署。這里,我自己遇到的問題是,因為還沒有 CNI 插件,coredns 組件的狀態(tài)一直是 pending的,直到部署完 Cilium 后,coredns 完成了重置變成running狀態(tài)。
測試安裝效果官方提供了一個 connectivity 檢查工具,以檢測部署好的 Cilium 是否工作正常。如果你的網絡環(huán)境有些限制,我作了一些簡單修改,可以參照這里。部署起來很簡單,請確保至少有兩個可用的節(jié)點,否則有幾個 deployment 會無法成功運行:

	>kubectlapply-fconnectivity-check.yaml NAMEREADYUP-TO-DATEAVAILABLEAGE echo-a1/11116d echo-b1/11116d host-to-b-multi-node-clusterip1/11116d host-to-b-multi-node-headless1/11116d pod-to-a1/11116d pod-to-a-allowed-cnp1/11116d pod-to-a-external-11111/11116d pod-to-a-l3-denied-cnp1/11116d pod-to-b-intra-node1/11116d pod-to-b-multi-node-clusterip1/11116d pod-to-b-multi-node-headless1/11116d pod-to-external-fqdn-allow-google-cnp1/11116d 如果所有的 deployment 都能成功運行起來,說明 Cilium 已經成功部署并工作正常。網絡可視化神器 Hubble上文提到了 Cilium 強大之處就是提供了簡單高效的網絡可視化功能,它是通過 Hubble組件完成的。Cilium在1.7版本后推出并開源了Hubble,它是專門為網絡可視化設計,能夠利用 Cilium 提供的 eBPF 數據路徑,獲得對 Kubernetes 應用和服務的網絡流量的深度可見性。這些網絡流量信息可以對接 Hubble CLI、UI 工具,可以通過交互式的方式快速診斷如與 DNS 相關的問題。除了 Hubble 自身的監(jiān)控工具,還可以對接主流的云原生監(jiān)控體系—— Prometheus 和 Grafana,實現(xiàn)可擴展的監(jiān)控策略。

部署 Hubble 和 Hubble UI

官方提供了基于 Helm Chart 部署方式,這樣可以靈活控制部署變量,實現(xiàn)不同監(jiān)控策略。出于想要試用 hubble UI 和對接 Grafana,我是這樣的部署的:

	>helmtemplatehubble --namespacekube-system --setmetrics.enabled="{dns:query;ignoreAAAA;destinationContext=pod-short,drop:sourceContext=pod;destinationContext=pod,tcp,flow,port-distribution,icmp,http}" --setui.enabled=true >hubble.yaml >kubectlapply-fhubble.yaml #包含兩個組件 #-daemonsethubble #-deploymenthubbleUI >kubectlgetpod-nkube-system|grephubble hubble-67ldp1/1Running021h hubble-f287p1/1Running021h hubble-fxzms1/1Running021h hubble-tlq641/1Running121h hubble-ui-5f9fc85849-hkzkr1/1Running015h hubble-vpxcb1/1Running021h 

運行效果

由于默認的 Hubble UI 只提供了 ClusterIP 類似的 service,無法通過外部訪問。因此需要創(chuàng)建一個 NodePort 類型的 service,如下所示:

	#hubble-ui-nodeport-svc.yaml kind:Service apiVersion:v1 metadata: namespace:kube-system name:hubble-ui-np spec: selector: k8s-app:hubble-ui ports: -name:http port:12000 nodePort:32321 type:NodePort執(zhí)行kubectl apply -f hubble-ui-nodeport-svc.yaml,就可以通過任意集群節(jié)點 IP 地址加上 32321 端口訪問 Hubble UI 的 web 服務了。打開效果如下所示:
		
  • 頁面上半部分是之前部署的一整套 conectivity-check 組件的數據流向圖,官方叫做Service Map,默認情況下可以自動發(fā)現(xiàn)基于網絡 3 層和 4 層的訪問依賴路徑,看上去非常 cool,也有點分布式鏈路追蹤圖的感覺。點擊某個服務,還能看到更為詳細的關系圖:
  • 下圖是 kube-system 命名空間下的數據流圖,能看到 Hubble-UI 組件和 Hubble 組件是通過gRPC 進行通信的,非常有趣。但令人感到的好奇的是,為何沒有顯示 Kubernetes 核心組件之間的調用關系圖:
頁面的下半部分默認顯示的是對于每條數據流路徑的詳細描述,包括發(fā)起請求的 pod 名稱、發(fā)起請求的 service 名稱、請求目標的 pod 名稱、請求目標的 service 名稱、目標 IP、目標端口、目標 7 層信息、請求狀態(tài)、最后一次查看時間等,如下圖所示: 點擊任意一條 flow,可以查看到更多詳細信息: 頁面的下半部分可以通過點擊切換成顯示 network policy 模式,列出了當前命名空間下所有的網絡策略: 如果想開啟網絡 7 層的可視化觀察,就需要對目標 pod 進行 annotations ,感興趣可以看這里,就不在入門篇詳述了。 這樣的網絡可視化是不是你夢寐以求的,絕對能在排查請求調用問題的時候幫上大忙。

對接 Grafana + Prometheus

如果你跟一樣是 Grafana+ Prometheus 的忠實粉絲,那么使 Hubble 對接它們就是必然操作了。仔細的同學已經發(fā)現(xiàn)之前 helm template 的玄機了:

	--setmetrics.enabled="{dns:query;ignoreAAAA;destinationContext=pod-short,drop:sourceContext=pod;destinationContext=pod,tcp,flow,port-distribution,icmp,http}" #上面的設置,表示開啟了 hubble 的 metrics 輸出模式,并輸出以上這些信息。 #默認情況下,Hubble daemonset 會自動暴露 metrics API 給 Prometheus。 你可以對接現(xiàn)有的 Grafana+Prometheus 服務,也可以部署一個簡單的:

	#下面的命令會在命名空間cilium-monitoring下部署一個Grafana服務和Prometheus服務 $kubectlapply-fhttps://raw.githubusercontent.com/cilium/cilium/v1.6/examples/kubernetes/addons/prometheus/monitoring-example.yaml #創(chuàng)建對應NodePortService,方便外部訪問web服務 $kubectlexposedeployment/grafana--type=NodePort--port=3000--name=gnp-ncilium-monitoring $kubectlexposedeployment/prometheus--type=NodePort--port=9090--name=pnp-ncilium-monitoring 完成部署后,打開 Grafana 網頁,導入官方制作的 dashboard,可以快速創(chuàng)建基于 Hubble 的 metrics 監(jiān)控。等待一段時間,就能在 Grafana 上看到數據了:
		Cilium 配合 Hubble,的確非常好用!取代 kube-proxy 組件Cilium 另外一個很大的宣傳點是宣稱已經全面實現(xiàn)kube-proxy的功能,包括ClusterIP,NodePort,ExternalIPsLoadBalancer,可以完全取代它的位置,同時提供更好的性能、可靠性以及可調試性。當然,這些都要歸功于 eBPF 的能力。官方文檔中提到,如果你是在先有 kube-proxy 后部署的 Cilium,那么他們是一個 “共存” 狀態(tài),Cilium 會根據節(jié)點操作系統(tǒng)的內核版本來決定是否還需要依賴 kube-proxy 實現(xiàn)某些功能,可以通過以下手段驗證是否能停止 kube-proxy 組件:

	#檢查Cilium對于取代kube-proxy的狀態(tài) >kubectlexec-it-nkube-system[Cilium-agent-pod]--ciliumstatus|grepKubeProxyReplacement #默認是Probe狀態(tài) #當Ciliumagent啟動并運行,它將探測節(jié)點內核版本,判斷BPF內核特性的可用性, #如果不滿足,則通過依賴kube-proxy來補充剩余的Kubernetess, #并禁用BPF中的一部分功能 KubeProxyReplacement:Probe[NodePort(SNAT,30000-32767),ExternalIPs,HostReachableServices(TCP,UDP)] #查看Cilium保存的應用服務訪問列表 #有了這些信息,就不需要kube-proxy進行中轉了 >kubectlexec-it-nkube-system[Cilium-agent-pod]--ciliumservicelist IDFrontendServiceTypeBackend 110.96.0.10:53ClusterIP1=>100.64.0.98:53 2=>100.64.3.65:53 210.96.0.10:9153ClusterIP1=>100.64.0.98:9153 2=>100.64.3.65:9153 310.96.143.131:9090ClusterIP1=>100.64.4.100:9090 410.96.90.39:9090ClusterIP1=>100.64.4.100:9090 50.0.0.0:32447NodePort1=>100.64.4.100:9090 610.1.1.179:32447NodePort1=>100.64.4.100:9090 7100.64.0.74:32447NodePort1=>100.64.4.100:9090 810.96.190.1:80ClusterIP 910.96.201.51:80ClusterIP 1010.96.0.1:443ClusterIP1=>10.1.1.171:6443 2=>10.1.1.179:6443 3=>10.1.1.188:6443 1110.96.129.193:12000ClusterIP1=>100.64.4.221:12000 120.0.0.0:32321NodePort1=>100.64.4.221:12000 1310.1.1.179:32321NodePort1=>100.64.4.221:12000 14100.64.0.74:32321NodePort1=>100.64.4.221:12000 1510.96.0.30:3000ClusterIP 1610.96.156.253:3000ClusterIP 17100.64.0.74:31332NodePort 180.0.0.0:31332NodePort 1910.1.1.179:31332NodePort 2010.96.131.215:12000ClusterIP1=>100.64.4.221:12000 #查看iptables是否有kube-proxy維護的規(guī)則 >iptables-save|grepKUBE-SVC #說明 kube-proxy 沒有維護任何應用服務跳轉,即可以停止它了。小結Cilium 作為當下最 Cool 的 Kubernetes CNI 網絡插件,還有很多特性,如高階 network policy、7 層流量控制等,這款基于 BPF/eBPF 打造出的簡單、高效、易用的網絡管理體驗,有機會大家都來試用吧。

責任編輯:haq


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 網絡
    +關注

    關注

    14

    文章

    8326

    瀏覽量

    95541
  • 容器
    +關注

    關注

    0

    文章

    535

    瀏覽量

    23023

原文標題:Kubernetes 網絡方案——炫酷的 Cilium

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Kubernetes Ingress Controller對比解析

    Kubernetes集群對外提供服務時,Ingress是標準的服務暴露方式。Ingress資源定義了HTTP/HTTPS路由規(guī)則,而Ingress Controller則是這些規(guī)則的實現(xiàn)者
    的頭像 發(fā)表于 04-09 10:09 ?185次閱讀

    Kubernetes Pod異常問題排查實戰(zhàn)

    集群跑著跑著,Pod 掛了。Slack 告警一刷屏,腦子一片空白。打開終端敲 kubectl get pods,看到一堆 CrashLoopBackOff、ImagePullBackOff、Pending,不知道從哪下手。這是每個剛接觸 Kubernetes 運維的人都會遇到的場景。
    的頭像 發(fā)表于 03-18 15:43 ?240次閱讀

    Trinamic方案加持,3D風扇屏如何實現(xiàn)穩(wěn)定的顯示效果?

    效果。它有很多名字這類設備有很多叫法,比如:3D全息廣告機全息風扇屏它的正式名稱是3D全息智能屏。原理其實不復雜它的成像原理,簡單來說,就是利用了人眼的“視覺暫留
    的頭像 發(fā)表于 03-09 15:39 ?177次閱讀
    Trinamic<b class='flag-5'>方案</b>加持,3D風扇屏如何實現(xiàn)穩(wěn)定<b class='flag-5'>酷</b><b class='flag-5'>炫</b>的顯示效果?

    KubePi:開源Kubernetes可視化管理面板,讓集群管理如此簡單

    應用。解決方案 :部署KubePi作為統(tǒng)一的視覺化管理平臺,讓開發(fā)人員和有限的運維人員能夠通過直觀的界面輕松管理應用部署、監(jiān)控集群狀態(tài),無需深入記憶復雜的Kubernetes命令。 5.2 教育培訓環(huán)境 挑戰(zhàn)
    發(fā)表于 02-11 12:53

    Kubernetes kubectl命令行工具詳解

    kubectl是Kubernetes官方提供的命令行工具,作為與Kubernetes集群交互的主要接口,它通過調用Kubernetes API Server實現(xiàn)對集群資源的全面管理。在生產環(huán)境中,運維工程師需要熟練掌握kubec
    的頭像 發(fā)表于 02-02 16:40 ?580次閱讀

    香港服務器支持Docker和Kubernetes嗎?

    Kubernetes的部署與運行? 答案是肯定的,而且香港服務器由于其獨特的優(yōu)勢,往往是部署容器化應用的絕佳選擇。 下面,我們將從技術支持、網絡優(yōu)勢、實踐指南和注意事項等方面,全面解析香港服務器與云原生技術的完美契合度。 一、核心技術支持:堅如磐石的基
    的頭像 發(fā)表于 10-21 15:47 ?879次閱讀

    Kubernetes安全加固的核心技術

    在生產環(huán)境中,Kubernetes集群的安全性直接關系到企業(yè)數據安全和業(yè)務穩(wěn)定性。本文將從實戰(zhàn)角度,帶你掌握K8s安全加固的核心技術。
    的頭像 發(fā)表于 08-18 11:18 ?937次閱讀

    高效管理Kubernetes集群的實用技巧

    作為一名經驗豐富的運維工程師,我深知在日常的Kubernetes集群管理中,熟練掌握kubectl命令是提升工作效率的關鍵。今天,我將分享15個經過實戰(zhàn)檢驗的kubectl實用技巧,幫助你像藝術家一樣優(yōu)雅地管理K8s集群。
    的頭像 發(fā)表于 08-13 15:57 ?1100次閱讀

    Kubernetes網絡模型詳解

    如果你也遇到過這些問題,恭喜你找對地方了。今天我將毫無保留地分享K8s網絡的核心原理和實戰(zhàn)經驗。
    的頭像 發(fā)表于 08-13 15:52 ?852次閱讀

    基于eBPF的Kubernetes網絡異常檢測系統(tǒng)

    作為一名在云原生領域深耕多年的運維工程師,我見過太多因為網絡問題導致的生產事故。傳統(tǒng)的監(jiān)控手段往往是事后諸葛亮,當你發(fā)現(xiàn)問題時,用戶已經在抱怨了。今天,我將分享如何利用 eBPF 這一革命性技術,構建一套能夠實時檢測 Kubernetes
    的頭像 發(fā)表于 07-24 14:09 ?908次閱讀

    生產環(huán)境中Kubernetes容器安全的最佳實踐

    隨著容器化技術的快速發(fā)展,Kubernetes已成為企業(yè)級容器編排的首選平臺。然而,在享受Kubernetes帶來的便利性和可擴展性的同時,安全問題也日益凸顯。本文將從運維工程師的角度,深入探討生產環(huán)境中Kubernetes容器
    的頭像 發(fā)表于 07-14 11:09 ?921次閱讀

    樹莓派部署 Kubernetes:通過 UDM Pro 實現(xiàn) BGP 負載均衡!

    最近,我將家庭實驗室的架構核心切換為一組樹莓派。盡管在樹莓派上運行的Kubernetes發(fā)行版眾多,但在資源受限的設備上運行Kubernetes時,控制平面的開銷是一個常見挑戰(zhàn)
    的頭像 發(fā)表于 06-25 18:00 ?1063次閱讀
    樹莓派部署 <b class='flag-5'>Kubernetes</b>:通過 UDM Pro 實現(xiàn) BGP 負載均衡!

    k8s網絡的基本介紹

    Kubernetes網絡是指在Kubernetes集群中不同組件之間進行通信和交互的網絡架構。
    的頭像 發(fā)表于 06-16 13:42 ?1032次閱讀

    Argo CD入門實戰(zhàn)指南

    Argo CD 是針對 Kubernetes 的聲明式 GitOps 持續(xù)交付工具。
    的頭像 發(fā)表于 05-15 17:03 ?1595次閱讀
    Argo CD<b class='flag-5'>入門</b>實戰(zhàn)指南

    Kubernetes Helm入門指南

    Helm 是 Kubernetes 的包管理工具,它允許開發(fā)者和系統(tǒng)管理員通過定義、打包和部署應用程序來簡化 Kubernetes 應用的管理工作。Helm 的出現(xiàn)是為了解決在 Kubernetes
    的頭像 發(fā)表于 04-30 13:42 ?3202次閱讀
    <b class='flag-5'>Kubernetes</b> Helm<b class='flag-5'>入門</b>指南