如何花點錢突破華為云CCE服務的“防線”

      網友投稿 1245 2025-03-31

      申明:所有的一切都是為了使得華為云可以更好,而不是為了diss它。


      通過華為云購買多個K8s集群,又想使用原生K8s接口調用這些集群,有什么好的方式?目前使用CCE服務的API依然是最好的選擇。但同時CCE的API又存在諸多限制,如API限流,部分原生接口未開放等。那有沒有方法繞開CCE的限制,自由的調用K8s的API呢?本文就是給出一個繞開“防線”的思路。歡迎交流指正~

      1????? 使用場景+遇到的困難

      使用場景:我有多個K8s集群。我的“管理模塊”(即主系統,是一個批處理系統)跑在一個獨立的VPC中,與干活的K8s隔離。然后會調用K8s的接口,投遞Job任務到對應的K8s集群中開始干活。如下圖:

      當前遇到的困難:限流+部分API未暴露。所以希望能有一條上圖黃色的通道。

      1.1????? 給每個K8s集群,買個EIP唄?

      顯然,可行性沒問題。但是這個方案并不好:

      (1)?????? EIP需要額外付費,價格也不便宜。

      (2)?????? EIP是互聯網地址,明明我所有程序都在華為云,為什么報文要走互聯網繞一圈。

      (3)?????? K8s集群并不想對互聯網外部暴露,徒增安全風險。

      那看看其他方式吧

      1.2????? 華為云VPC打通服務 VPC-endpoint

      我們知道跨vpc(特別是跨租戶的vpc),可通過華為云的 vpc-endpoint 服務完成連接通道的打通。

      參考:https://support.huaweicloud.com/productdesc-vpcep/zh-cn_topic_0131645196.html

      既然EIP不合適,那我們就走全部華為云內網的 vpc-endpoint 方案吧。

      2????? 跨VPC打通通道。

      定下整體方案是就是利用 vpc-endpoint 來打通繞開CCE API-Server的限制。

      以下就是操作過程:

      2.1????? VPCEP直接連3臺K8s-Master。(失敗)

      每個CCE集群,都會有一個內網訪問的IP地址。其Master的IP可以在界面看到。

      那咱直接讓 vpc-endpoint 對接這個IP不就完了么?

      如下圖:

      想法雖然好,可是事實是殘酷的。

      (1)?????? CCE給出的這個內網IP地址是一個vip(虛IP),本身是用來保證可靠性的。當某臺master掛了,會自動漂移到其他2臺Master上面。

      (2)?????? 經過確認:Vpc-endpoint使用的是vxlan隧道,走的是點對點協議。 也就是vpcep會最終綁定到Master節點的實際IP地址。當vip發生漂移時,vpcep就會失效(不支持自動檢測漂移,需要重新綁定到新的節點)。

      所以也就沒辦法通過vpcep直接連3臺Master了。

      3????? 通過ELB中轉一次連K8s-Master

      vpcep服務當前只能對接 (1)ELB實例 or (2)具體的ECS 這2種后端。

      而這里咱們有3臺Master節點,顯然第(2)種就不合適。所以咱就走(1)elb實例吧。

      接下來==》那咱重點分析 “k8s集群怎么對接elb”吧。

      3.1????? 使用CCE提供的:Service綁定elb功能。(失敗)

      K8s自帶了一個訪問api-server的 service。

      所有集群里面的容器,都可以通過這個地址,訪問Master。

      那我們通過elb去連接這個svc,不就可以了么?

      根據CCE的文檔,操作起來:

      https://support.huaweicloud.com/usermanual-cce/cce_01_0014.html

      給SVC設置一個:annotation,帶上elb實例id。走起~

      嗯?報錯了。。

      k8s里面的controller報錯說:連elb的svc必須要有selector。

      也就使用elb直接連那個“無selector”的 “kubernetes” service,CCE的controller會報錯,此路走不通。。。

      唐老師注:說明controller實現時,考慮的兼容性不夠強。當已經有 endpoints 了,應沒必要強制要求有 selector了(因為k8s的selector的目的就是為了找到目標地址,咱這里目標都已經提前知道了)

      3.2????? 使用ELB去連3臺K8s-Master地址。(失敗)

      既然CCE的Service實現帶了約束,導致Master無法直接對接elb。 那咱就直接從elb角度,直接去連3臺master吧(cce的controller,也是調用elb的api來關聯的)。

      如下圖:

      可是,事實還是失敗告終。

      原因:當前華為云的elb只能連 ECS 的主網卡,而咱們的3臺CCE Master節點的網卡,都是從網卡。如下圖:

      ELB實例不支持連從網卡(如下圖)。。。

      據說華為云的下一代elb(v3)支持連從網卡。于是當前,此路不通~

      4????? 再找個Nginx中轉一次吧

      Elb不能直接連master節點,而elb連Service又必須得帶selector。那就只能額外部署一個proxy容器,使用selector先到這個proxy容器,再轉到Master。

      4.1????? 通過Configmap掛載Nginx配置文件。(失敗)

      啟動 Nginx 得有個 conf 配置。 咱們通過 configmap 將nginx.conf配置文件掛載到Nginx容器里面。

      嗯?怎么報錯了。華為云的WAF將CCE的這個創建Configmap的API攔截了。。。

      所以自動化啟動Nginx(通過CCE的API-server)是行不通了。

      4.2????? 從K8s內部創建Configmap并掛載。(成功)

      走CCE云服務API接口失敗,那就走K8s內部的原生接口吧。

      # kubectl create configmap nginx --from-file=nginx.conf

      其中 nginx.conf 的內容如下:

      user??nginx; worker_processes??1; ? error_log??/var/log/nginx/error.log?warn; pid????????/var/run/nginx.pid; ? events?{ ????worker_connections??1024; } ? stream?{ ? ????log_format?proxy?'$remote_addr?[$time_local]?' ?????????????????'$protocol?$status?$bytes_sent?$bytes_received?' ?????????????????'$session_time?"$upstream_addr"?' ?????????????????'"$upstream_bytes_sent"?"$upstream_bytes_received"?"$upstream_connect_time"'; ? ????access_log?/opt/software/nginx/logs/tcp-access.log?proxy?; ????open_log_file_cache?off; ????????? ?????????upstream?kubeapi?{ ???????????????????server?kubernetes.default:443; ?????????} ? ?????????server?{ ???????????????????listen?443; ???????????????????proxy_connect_timeout?8s; ???????????????????proxy_timeout?24h; ???????????????????proxy_pass?kubeapi; ?????????} }

      如何花點錢突破華為云CCE服務的“防線”

      創建configmap完成。

      4.3????? 啟動Nginx容器,然后vpcep連接該容器。(失敗)

      配置文件好了,那我們啟動Nginx吧(記得掛載上面那個configmap哦)。

      我的configmap掛載地址是:

      /etc/nginx/configmap

      容器啟動命令:

      mv nginx.conf nginx.conf.bak; cp configmap/nginx.conf nginx.conf; mkdir -p /opt/software/nginx/logs; nginx &

      啟動Deployment的同時,創建類型為 Loadbalancer 類型的 Service(使得ELB連通到Nginx容器)。

      可以看到elb實例已經創建出來。

      4.4????? 開始創建 vpc-endpoint。

      (1)先在目的vpc(即K8s集群對應的vpc網絡)創建 vpc-endpoint-service。選擇連咱們的elb實例。

      重點:權限設置里面,記得允許別人連接。(如果有跨租戶調用K8s接口)

      (2)然后在客戶端的vpc(即管理邏輯模塊所在vpc)創建 vpc-endpoint。

      通過名字,找到步驟(1)的endpoint-service,并綁定成功:

      重點:這里這個 vpc-endpoint 需要 1毛錢/小時。一天2塊4,標題說的花點錢就是在這里了。

      (3)創建好的vpc-endpoint如下:

      咱們直接從客戶端訪問這個 vpcep(直接代表了那個Nginx容器)吧。

      額,不通呀。。。

      4.5????? 終于大功告成

      經過定位:是 Nginx容器綁定ELB的時候,CCE沒有自動創建elb的backend導致的(應該是小bug,我的集群版本也比較舊,才1.11的)。

      后面通過:擴容pod數量,再次觸發一次刷新elb后端backend行為:可以看到有backed了

      這個時候,通過 vpcep 終于可以訪問到目標CCE集群的API了。

      (上面401,是因為沒有帶token。 帶了“Authorization: Bearer iam-token”是OK的)

      打通的完整流程圖如下:

      到此,我們就可以隨意跨租戶、跨VPC、跨集群 來訪問K8s的API了,不用經過CCE的Api-server了。

      (相當于我們自己造了一個 “偽CCE-API-Server”)

      5????? 總結

      通過精心挖掘的通道,花費2.4元/集群/天,即可繞開華為云CCE服務的API-Server的“防線”,“暢通”地調用你購買的K8s接口。

      關鍵在于,為了獲得“自由調用K8s接口”這個目的,是否值得這一路上的各種坎坷?至少從這些困難點來看,華為云還存在很大的可改進空間。如:

      (1)?????? API-Server限制可否放開一點?

      (2)?????? ELB能否直接對接K8s-Master?

      (3)?????? VPC-endpoint能否直接對接K8s集群?

      (4)?????? VPC-endpoint,無法提供報文日志,用戶無法自己排查問題。

      (5)?????? 能否有更簡潔的管理多K8s集群的“偽API-server”功能。

      但是,正是因為有人去發現問題,才能有變得更好的可能,不是么? 感謝各位,Thanks~

      容器 VPC終端節點 云容器引擎 CCE Kubernetes

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:在WPS表中 如何在整個數字前加上減號?(在wps表中把一列數變成畝)
      下一篇:excel怎么改變單元格大小
      相關文章
      亚洲最大的黄色网| 久久精品国产亚洲AV果冻传媒| 亚洲精品99久久久久中文字幕| 亚洲中文字幕无码av| 亚洲网站在线播放| 久久久亚洲欧洲日产国码是AV| 亚洲第一网站男人都懂| 亚洲精品天堂成人片?V在线播放| 国产大陆亚洲精品国产| 亚洲日韩精品无码AV海量| 国内精品久久久久影院亚洲| 97久久国产亚洲精品超碰热| 精品亚洲国产成人| 亚洲一卡二卡三卡| 亚洲福利电影在线观看| 亚洲不卡视频在线观看| 中文字幕亚洲综合小综合在线| 亚洲人成免费电影| 亚洲人成电影青青在线播放| 亚洲理论片中文字幕电影| 亚洲av无码片区一区二区三区| 2017亚洲男人天堂一| 亚洲国产精品网站在线播放| 亚洲性色精品一区二区在线| 亚洲狠狠婷婷综合久久| 国产成人亚洲精品91专区高清| 亚洲第一区精品日韩在线播放| 精品亚洲成α人无码成α在线观看 | 国产成人亚洲综合在线| 亚洲精品线路一在线观看| 亚洲桃色AV无码| 久久精品亚洲一区二区| 亚洲视频免费观看| 亚洲一级特黄特黄的大片| 亚洲AV无码AV吞精久久| 亚洲片一区二区三区| 亚洲日韩精品一区二区三区| 亚洲AV日韩精品久久久久久| 久久久亚洲AV波多野结衣| 7777久久亚洲中文字幕| 国产青草亚洲香蕉精品久久|