<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # IP 偽裝代理 本文將講述如何配置和啟用 ip-masq-agent。 ## 創建 ip-masq-agent 要創建 ip-masq-agent,運行下面的 kubectl 命令: ```bash kubectl create -f https://raw.githubusercontent.com/kubernetes-incubator/ip-masq-agent/master/ip-masq-agent.yaml ``` 關于 ip-masq-agent 的更多信息請參考 [該文檔](https://github.com/kubernetes-incubator/ip-masq-agent)。 在大多數情況下,默認的一套規則應該是足夠的;但是,如果內置的規則不適用于您的集群,您可以創建并應用 ConfigMap 來自定義受影響的 IP 范圍。例如,為了僅允許 ip-masq-agent 考慮 10.0.0.0/8,您可以在名為 “config” 的文件中創建以下 ConfigMap。 ```yaml nonMasqueradeCIDRs: - 10.0.0.0/8 resyncInterval: 60s ``` **注意**:重要的是,該文件被命名為 config,因為默認情況下,該文件將被用作 ip-masq-agent 查找的關鍵字。 運行下列命令將 ConfigMap 添加到您的集群中: ```bash kubectl create configmap ip-masq-agent --from-file=config --namespace=kube-system ``` 這將會更新 */etc/config/ip-masq-agent* 文件,并每隔 *resyscInterval* 時間段檢查一遍該文件,將配置應用到集群的節點中。 ```http iptables -t nat -L IP-MASQ-AGENT Chain IP-MASQ-AGENT (1 references) target prot opt source destination RETURN all -- anywhere 169.254.0.0/16 /* ip-masq-agent: cluster-local traffic should not be subject to MASQUERADE */ ADDRTYPE match dst-type !LOCAL RETURN all -- anywhere 10.0.0.0/8 /* ip-masq-agent: cluster-local MASQUERADE all -- anywhere anywhere /* ip-masq-agent: outbound traffic should be subject to MASQUERADE (this match must come after cluster-local CIDR matches) */ ADDRTYPE match dst-type !LOCAL ``` 默認情況下,本地鏈路范圍(169.254.0.0/16)也由 ip-masq 代理處理,該代理設置相應的 iptables 規則。想要讓 ip-masq-agent 忽略本地鏈路,您可以在 ConfigMap 中將 masqLinkLocal 設置為 true。 ```yaml nonMasqueradeCIDRs: - 10.0.0.0/8 resyncInterval: 60s masqLinkLocal: true ``` ## IP 偽裝代理用戶指南 ip-masq-agent 用戶配置 iptables 規則將 Pod 的 IP 地址隱藏在集群 node 節點的 IP 地址后面。這通常在將流量發送到群集的 pod [CIDR](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) 范圍之外的目的地時執行。 ## 關鍵術語 - **NAT(網絡地址轉換)** 是一種通過修改 IP 頭中的源和/或目標地址信息來將一個 IP 地址重映射到另一個 IP 地址的方法。通常由執行 IP 路由的設備完成。 - **Masquerading(偽裝)** NAT 的一種形式,通常用于執行多個地址轉換,其中多個源 IP 地址被掩蓋在單個地址之后,通常是由某設備進行 IP 路由。在 kubernetes 中,這是 Node 的 IP 地址。 - **CIDR(無類域內路由選擇)** 基于可變長度子網掩碼,允許指定任意長度的前綴。CIDR 引入了一種新的 IP 地址表示方法,現在通常被稱為 **CIDR 表示法**,將地址或路由前綴的比特位數作為后綴,例如 192.168.2.0/24。 - **本地鏈路** 本地鏈路地址是僅能在主機連接的網段或廣播域內進行有效通信的網絡地址。IPv4 的鏈路本地地址在 CIDR 表示法定義的地址塊是 169.254.0.0/16。 Ip-masq-agent 在將流量發送到集群 node 節點的 IP 和 Cluster IP 范圍之外的目的地時,會配置 iptables 規則來處理偽裝的 node/pod IP 地址。這基本上將 pod 的 IP 地址隱藏在了集群 node 節點的 IP 地址后面。在某些環境中,到 “外部” 地址的流量必須來自已知的機器地址。例如,在 Google Cloud 中,到互聯網的任何流量必須來自虛擬機的 IP。當使用容器時,如在GKE中,Pod IP 將被拒絕作為出口。為了避免這種情況,我們必須將 Pod IP 隱藏在 VM 自己的 IP 地址之后——通常被稱為 “偽裝”。默認情況下,配置代理將 [RFC 1918](https://tools.ietf.org/html/rfc1918)指定的三個專用 IP 范圍視為非偽裝 [CIDR](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)。范圍包括 10.0.0.0/8、172.16.0.0/12 和 192.168.0.0/16。默認情況下,代理還將本地鏈路(169.254.0.0/16)視為非偽裝 CIDR。代理配置為每隔60秒從 */etc/config/ip-masq-agent* 位置重新加載其配置,這也是可配置的。 ![IP偽裝代理示意圖](https://box.kancloud.cn/f54e3c286e33f3a727af8638304985fc_960x720.png) 代理的配置文件必須使用 yaml 或 json 語法,并且包含以下三個可選的 key: - **nonMasqueradeCIDRs**:使用 [CIDR](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) 表示法指定的非偽裝范圍的字符串列表。 - **masqLinkLocal**:一個布爾值(true/false),表示是否將流量偽裝成本地鏈路前綴 169.254.0.0/16。默認為false。 - **resyncInterval**:代理嘗試從磁盤重新加載配置的時間間隔。例如 ’30s’ 其中 ‘s’ 是秒,’ms’ 是毫秒等… 到 10.0.0.0/8、172.16.0.0/12 和 192.168.0.0/16 范圍的流量將不會被偽裝。任何其他流量(假定是互聯網)將被偽裝。這里有個例子,來自 pod 的本地目的地址可以是其節點的 IP 地址、其他節點的地址或 Cluster IP 范圍中的一個 IP 地址。其他任何流量都將默認偽裝。以下條目顯示 ip-masq-agent 應用的默認規則集: ```http iptables -t nat -L IP-MASQ-AGENT RETURN all -- anywhere 169.254.0.0/16 /* ip-masq-agent: cluster-local traffic should not be subject to MASQUERADE */ ADDRTYPE match dst-type !LOCAL RETURN all -- anywhere 10.0.0.0/8 /* ip-masq-agent: cluster-local traffic should not be subject to MASQUERADE */ ADDRTYPE match dst-type !LOCAL RETURN all -- anywhere 172.16.0.0/12 /* ip-masq-agent: cluster-local traffic should not be subject to MASQUERADE */ ADDRTYPE match dst-type !LOCAL RETURN all -- anywhere 192.168.0.0/16 /* ip-masq-agent: cluster-local traffic should not be subject to MASQUERADE */ ADDRTYPE match dst-type !LOCAL MASQUERADE all -- anywhere anywhere /* ip-masq-agent: outbound traffic should be subject to MASQUERADE (this match must come after cluster-local CIDR matches) */ ADDRTYPE match dst-type !LOCAL ``` 默認情況下,在 GCE/GKE 中將啟動 kubernetes 1.7.0 版本,ip-masq-agent 已經在集群中運行。如果您在其他環境中運行 kubernetes,那么您可以將 ip-masq-agent 以 [DaemonSet](https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/) 的方式在集群中運行。 原文地址:https://k8smeetup.github.io/docs/tasks/administer-cluster/ip-masq-agent/ 譯者:[rootsongjc](https://github.com/rootsongjc)
                  <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>

                              哎呀哎呀视频在线观看