<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # Cilium架構設計與概念解析 Cilium 要求 Linux kernel 版本在 4.8.0 以上,Cilium 官方建議 kernel 版本至少在 4.9.17 以上,高版本的 Ubuntu 發行版中 Linux 內核版本一般在 4.12 以上,如使用 CentOS7 需要升級內核才能運行 Cilium。 KV 存儲數據庫用存儲以下狀態: - 策略身份,Label 列表 <=> 服務身份標識 - 全局的服務 ID,與 VIP 相關聯(可選) - 封裝的 VTEP(Vxlan Tunnel End Point)映射(可選) 為了簡單起見,Cilium 一般跟容器編排調度器使用同一個 KV 存儲數據庫,例如在 Kubernetes 中使用 etcd 存儲。 ## 組成 下圖是 Cilium 的組件示意圖,Cilium 是位于 Linux kernel 與容器編排系統的中間層。向上可以為容器配置網絡,向下可以向 Linux 內核生成 BPF 程序來控制容器的安全性和轉發行為。 ![Cilium 組件(來自 Cilium 官網)](https://ws3.sinaimg.cn/large/006tNbRwly1fwztvhg0gmj318z143tdv.jpg) 管理員通過 Cilium CLI 配置策略信息,這些策略信息將存儲在 KV 數據庫里,Cilium 使用插件(如 CNI)與容器編排調度系統交互,來實現容器間的聯網和容器分配 IP 地址分配,同時 Cilium 還可以獲得容器的各種元數據和流量信息,提供監控 API。 **Cilium Agent** Cilium Agent 作為守護進程運行在每個節點上,與容器運行時如 Docker,和容器編排系統交互如 Kubernetes。通常是使用插件的形式(如 Docker plugin)或遵從容器編排標準定義的網絡接口(如 [CNI](https://jimmysong.io/kubernetes-handbook/concepts/cni.html))。 Cilium Agent 的功能有: - 暴露 API 給運維和安全團隊,可以配置容器間的通信策略。還可以通過這些 API 獲取網絡監控數據。 - 收集容器的元數據,例如 Pod 的 Label,可用于 Cilium 安全策略里的 Endpoint 識別,這個跟 Kubernetes 中的 service 里的 Endpoint 類似。 - 與容器管理平臺的網絡插件交互,實現 IPAM 的功能,用于給容器分配 IP 地址,該功能與 [flannel](https://jimmysong.io/kubernetes-handbook/concepts/flannel.html)、[calico](https://jimmysong.io/kubernetes-handbook/concepts/calico.html) 網絡插件類似。 - 將其有關容器標識和地址的知識與已配置的安全性和可見性策略相結合,生成高效的 BPF 程序,用于控制容器的網絡轉發和安全行為。 - 使用 clang/LLVM 將 BPF 程序編譯為字節碼,在容器的虛擬以太網設備中的所有數據包上執行,并將它們傳遞給 Linux 內核。 ## 命令行工具 Cilium 提供了管理命令行管理工具,可以與 Cilium Agent API 交互。`cilium` 命令使用方式如下。 ```bash Usage: cilium [command] Available Commands: bpf 直接訪問本地 BPF map cleanup 重置 agent 狀態 completion bash 自動補全 config Cilium 配置選項 debuginfo 從 agent 請求可用的調試信息 endpoint 管理 endpoint identity 管理安全身份 kvstore 直接訪問 kvstore map 訪問 BPF map monitor 顯示 BPF 程序事件 node 管理集群節點 policy 管理安全策略 prefilter 管理 XDP CIDR filter service 管理 service & loadbalancer status 顯示 daemon 的狀態 version 打印版本信息 ``` 詳細使用情況請參考 [Cilium Command Cheatsheet](https://cilium.readthedocs.io/en/stable/cheatsheet/)。 ## 策略控制示例 使用 docker-compose 安裝測試,需要先用 vagrant 啟動虛擬機,使用的是 Ubuntu-17.10 的 vagrant box。在下面的示例中,Cilium 是使用 docker network plugin 的方式部署的。Cilium 的一項主要功能——為容器創建網絡,使用 `docker inspect` 來查詢使用 Cilium 網絡的容器配置,可以看到 Cilium 創建的容器網絡示例如下。 ```json "Networks": { "cilium-net": { "IPAMConfig": null, "Links": null, "Aliases": [ "a08e52d13a38" ], "NetworkID": "c4cc3ac444f3c494beb1355e4a9c4bc474d9a84288ceb2030513e8406cdf4e9b", "EndpointID": "2e3e4486525c20fc516d0a9d1c52f84edf9a000f3068803780e23b4c6a1ca3ed", "Gateway": "", "IPAddress": "10.15.125.240", "IPPrefixLen": 32, "IPv6Gateway": "f00d::a0f:0:0:1", "GlobalIPv6Address": "f00d::a0f:0:0:ed50", "GlobalIPv6PrefixLen": 128, "MacAddress": "", "DriverOpts": null } } ``` - **NetworkID**:每個網絡平面的唯一標識 - **EndpointID**:每個容器/Pod 的在網絡中的唯一標識 在 docker-compose 安裝方式的[快速開始指南](https://cilium.readthedocs.io/en/stable/gettingstarted/docker/)中,演示了如何使用 Label 來選擇容器,從而限制兩個容器(應用)之間的流量訪問權限的。 策略使用 JSON 格式配置,例如[官方示例](https://cilium.readthedocs.io/en/stable/gettingstarted/docker/)使用 Cilium 直接在 L3/L4 層管理容器間訪問策略的方式。例如下面的策略配置具有 `id=app2` 標簽的容器可以使用 TCP 協議、80 端口訪問具有標簽 `id=app1` 標簽的容器。 ```json [{ "labels": [{"key": "name", "value": "l3-rule"}], "endpointSelector": {"matchLabels":{"id":"app1"}}, "ingress": [{ "fromEndpoints": [ {"matchLabels":{"id":"app2"}} ], "toPorts": [{ "ports": [{"port": "80", "protocol": "TCP"}] }] }] }] ``` 將該配置保存成 JSON 文件,在使用 `cilium policy import` 命令即可應用到 Cilium 網絡中。 ![Cilium 網絡配置策略](https://ws1.sinaimg.cn/large/006tNbRwly1fwzreaalj6j30dz0dy3z3.jpg) 如圖所示,此時 `id` 標簽為其他值的容器就無法訪問 `id=app1` 容器,策略配置中的 `toPorts` 中還可以配置 HTTP `method` 和 `path`,實現更細粒度的訪問策略控制,詳見 [Cilium 官方文檔](https://cilium.readthedocs.io/en/stable/gettingstarted/docker/)。 ## 參考 - [https://cilium.readthedocs.io/en/stable/concepts/](https://cilium.readthedocs.io/en/stable/concepts/) - [https://cilium.readthedocs.io/en/stable/gettingstarted/docker/](https://cilium.readthedocs.io/en/stable/gettingstarted/docker/)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看