K8S 生態週報| Cilium v1.10.0 帶來 Egress Gateway 等特性

「K8S 生態週報」內容主要包含我所接觸到的 K8S 生態相關的每週值得推薦的一些信息。歡迎訂閱知乎專欄 「k8s生態」

KIND v0.11.0 正式發佈

KIND (Kubernetes In Docker) 關注個人小夥伴想必已經都很熟悉了,這是我一直都在參與也用的很是多的一個項目,它能夠很方便的使用 Docker 容器做爲 Kubernetes 的 Node ,快速的啓動一個/或多個測試集羣。自上個版本發佈以來已通過了 4 個月,咱們一塊兒來看看這個版本中有哪些值得注意的變動吧!node

破壞性變動

  • 在這個版本中默認的 k8s 版本爲 v1.21.1;
  • 移除掉了使用 bazel 構建鏡像的方式,kind build node-image--type 參數已廢棄;
  • kind build node-image--kube-root 參數已廢棄,將會按照標準模式尋找 k8s 的代碼目錄的位置;

新特性

  • kind build node-image 新增了一個 --arch 的參數,可支持構建多架構的鏡像了;
  • KIND 當前發佈的預構建鏡像,已經都是 multi-arch 的了,可運行在 amd64 和 arm64 架構上;
  • 當前 KIND 已經能夠運行在 rootless 模式下的 Docker 和 rootless 模式下的 Podman 中了,詳細指南請參考 KIND 運行在 rootless 模式 ;
  • KIND 默認的 CNI kindnetd 已經支持了雙棧網絡, 並在 v1.21 版本的 k8s 中默認啓用 ;

你能夠經過如下任意方式安裝最新版的 KIND :linux

  • GO111MODULE="on" go get sigs.k8s.io/kind@v0.11.0;
  • wget -O kind https://kind.sigs.k8s.io/dl/v0.11.0/kind-linux-amd64;
  • clone KIND 的代碼倉庫後,執行 make build ;

更多關於 KIND 的使用及說明請參考官方文檔:https://kind.sigs.k8s.io/ 歡迎下載使用。git

apisix-ingress-controller v0.6.0 發佈

Apache APISIX Ingress controller 是 Apache APISIX 的控制面組件,能夠將其自定義資源(CR)及 Kubernetes 中原生的 Ingress 資源發佈至 APISIX 中,進而利用 APISIX 做爲入口網關管理南北向的流量。 咱們一塊兒來看看本次發佈的 v0.6.0 版本中帶來了哪些值得注意的變動吧:github

  • #115 支持了 TCP 代理;
  • #242 爲已經被 ingress controller 推送的資源增長了 label;
  • ApisixUpstreamApisixTls 增長了 jsonschema 校驗;
  • #394 記錄了資源處理時的 Kubernetes events;
  • #395 支持上報資源的 status;
  • #402 爲 cluster 級別的插件增長 global_rules 配置;

Cilium v1.10.0 正式發佈

Cilium 我在以前的文章中已經介紹過不少次了,它基於 eBPF 技術,能夠爲 Kubernetes 中應用程序服務間網絡和 API 鏈接提供透明代理和保護。 想快速瞭解 Cilium 能夠參考我以前寫的 《Cilium 快速上手》 想快速瞭解 eBPF 也能夠看看我在 PyCon China 2020 上作的分享。apache

Cilium v1.10 版本是一個比較大的特性版本,在這個版本中帶來了衆多值得關注的特性,咱們一塊兒來看看吧!編程

Egress IP Gateway

在幾乎全部網絡組件都在作入口網關的時候, Cilium 發現當把雲原生應用和傳統應用集成時,傳統應用大多經過 IP 白名單的方式進行受權, 加上 Pod IP 的動態性,對 IP 地址的管理就成爲了一個痛點。json

如今 Cilium 新版本中,經過新的 Kubernetes CRD ,能夠在數據包離開 Kubernetes 集羣時將靜態 IP 與流量相關聯,這使得外部防火牆會使用此一致的靜態 IP 去識別 Pod 流量。api

其實就是 Cilium 幫忙作了 NAT ,使用起來也很簡單:網絡

apiVersion: cilium.io/v2alpha1
kind: CiliumEgressNATPolicy
metadata:
  name: egress-sample
spec:
  egress:
  - podSelector:
      matchLabels:
        # The following label selects default namespace
        io.kubernetes.pod.namespace: default
  destinationCIDRs:
  - 192.168.33.13/32
  egressSourceIP: "192.168.33.100"

上述的配置就是說:使用 egressSourceIP 中配置的 IP 來處理來自於 default 命名空間中 Pod 的出口流量了。架構

BGP 集成的支持

不少小夥伴放棄 Cilium 的一大緣由多是由於 BGP 的支持,但從這個版本開始就不用擔憂了!

Cilium 經過集成 MetalLB 來進行的,以此來達到 BGP L3 協議支持,這樣 Cilium 能夠爲 LoadBalancer 類型的服務分配 IP ,並經過 BGP 將其通告的路由器,這樣外部的流量就能夠正常的訪問到服務了。

配置 BGP 支持的方式也很簡單:

apiVersion: v1
kind: ConfigMap
metadata:
  name: bgp-config
  namespace: kube-system
data:
  config.yaml: |
    peers:
    - peer-address: 10.0.0.1
      peer-asn: 64512
      my-asn: 64512
    address-pools:
    - name: default
      protocol: bgp
      addresses:
      - 192.0.2.0/24

主要就是 peers 用於和網絡中現有的 BGP 路由器互聯,address-pools 則是 Cilium 爲 LoadBalancer 分配的 IP 池。

基於 XDP 的獨立負載均衡

Cilium 基於 eBPF 的負載均衡器最近增長了對 Maglev 一致性哈希的支持,以及 eXpress(XDP) 層上轉發平面的加速,這些特性使得它也能夠做爲獨立的 4 層負載均衡存在。

Cilium XDP L4LB 具備完整的 IPv4/IPv6 雙棧支持,能夠獨立於 Kubernetes 集羣獨立部署,做爲一個可編程的 L4 LB 存在。

其餘

另外就是增長了對 Wireguard 的支持,進行 Pod 間流量的加密;增長了一個新的 Cilium CLI ,用於管理 Cilium 集羣;以及 比以往更加優異的性能!

更多關於 Cilium 項目的變動,請參考其 ReleaseNote

上游進展

  • runc 發佈了 v1.0-rc95 版本,大概是 v1.0 前的最後一個版本了;
  • CNCF 網絡小組定義了一套 Service Mesh Performance 的規範,經過此規範來達成一個統一的標準,用來衡量 Service Mesh 的性能狀況;
  • CNCF 網絡小組定義了一套 Service Mesh Performance 的規範,經過此規範來達成一個統一的標準,用來衡量 Service Mesh 的性能狀況;

歡迎訂閱個人文章公衆號【MoeLove】

TheMoeLove

相關文章
相關標籤/搜索