日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

使用網關DNAT規則直接訪問Pod

在游戲、P2P等場景中,您通常需要客戶端直接訪問Pod。傳統模式下,您可以為Pod分配EIP來訪問Pod。但這種方式存在一些問題,例如EIP數量限制、安全管理問題等。您可以在NAT網關上配置EIP,使用公網NAT網關的DNAT方式暴露Pod的訪問入口,從而節省EIP數量。

前提條件

  • 已創建ACK托管集群ACK專有集群,且集群網絡插件為Terway。詳細信息,請參見創建ACK托管集群創建ACK專有集群

  • 已在VPC中創建NAT網關并使用natgw控制器,如何創建NAT網關請參見創建和管理公網NAT網關實例

  • 已在DNAT規則中建立公網IP、公網端口、私網端口、私網IP的映射關系。關于DNAT原理請參見通過公網NAT網關DNAT功能實現ECS對外提供服務

    • 公網IP: 為公網NAT網關上配置的EIP。

    • 公網端口:為natgw控制器配置文件中配置的portRangeStartportRangeEnd范圍,由natgw控制器自動分配,分配后信息在Pod同名CR poddnats.alibabacloud.com中記錄。

    • 私網端口:為Pod Annotations中配置的Pod監聽的端口。

    • 私網IP: 為Pod IP。

使用限制

  • 本功能僅支持普通ECS節點,不支持ECI實例。

  • 配置條目數受限于NAT網關能力,使用約束請參見DNAT功能FAQ

Pod配置

您可以使用以下Pod Annotations配置:

Pod Annotations

Value

k8s.aliyun.com/pod-dnat

為Pod開啟DNAT能力,取值為空。

k8s.aliyun.com/pod-dnat-expose-port

Pod監聽端口,多個端口使用逗號分隔,例如: '80,443'。

k8s.aliyun.com/pod-dnat-expose-protocol

協議類型,支持tcpudp,默認tcp

k8s.aliyun.com/pod-dnat-fixed

為有狀態容器啟用配置保持。

重要

安全組配置:Pod所屬的安全組中需要開放入方向的允許規則,規則中的端口為暴露Pod的端口。

在ack-extend-network-controller中啟用DNAT功能

ack-extend-network-controller需要訪問阿里云OpenAPI來創建資源,您需要在RAM中配置相應的權限,然后在應用市場中安裝ack-extend-network-controller,并通過注解為指定Pod創建和關聯DNAT 。

步驟一:配置DNAT所需的RAM權限

  • 對于ACK集群:

    1. 登錄容器服務管理控制臺,在左側導航欄單擊集群

    2. 集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇集群信息

    3. 集群信息頁面,單擊集群資源頁簽,然后單擊Worker RAM角色右側鏈接。

    4. 創建自定義權限策略,策略內容如下。具體操作,請參見步驟一:創建自定義權限策略

      {
            "Effect": "Allow",
            "Action": [
              "ecs:DescribeNetworkInterfaces",
              "vpc:DescribeNatGateways",
              "vpc:DescribeForwardTableEntries",
              "vpc:CreateForwardEntry",
              "vpc:DescribeEipAddresses",
              "vpc:DeleteForwardEntry",
              "vpc:DescribeRouteTableList",
              "vpc:DescribeRouteEntryList"
            ],
            "Resource": [
              "*"
            ],
            "Condition": {}
          }
    5. 為集群的Worker RAM角色授權。具體操作,請參見步驟二:為集群的Worker RAM角色授權

  • 對于ACK Serverless集群

    請為RAM用戶生成訪問密鑰(AccessKey)。具體操作,請參見創建RAM用戶創建自定義權限策略

步驟二:為ack-extend-network-controller組件開啟natgw控制器

您需要安裝ack-extend-network-controller組件,并且開啟natgw控制器。關于ack-extend-network-controller組件的安裝入口,請參見應用市場

natgw控制器配置參數如下。

clusterID: "c11ba338192xxxxxxx"          # 請按實際情況填寫。
regionID: "cn-hangzhou"                  # 請按實際情況填寫。
vpcID: "vpc-bp1rkq0zxxxxxx"              # 請按實際情況填寫。
enableControllers:
  - natgw                                  # 啟用DNAT。

networkController:
  natGwPool:
    - natgwId: "< nat gateway id. >"                   # nat 公網網關ID。
      zoneId: "< nat gateway zone id. cn-hangzhou-j >" # nat 公網網關可用區ID。
      portRangeStart: 512                              # 起始端口。
      portRangeEnd: 1024                               # 結束端口。
      eips:
        - "<auto config all nat gateway eips if not config. 0.0.0.0 >"  # 使用公網網關EIP,如不設置,則使用網關上配置的全部EIP。

credential:                               # 使用AK/SK,ACK集群推薦使用RamRole模式配置。 若使用步驟一為集群的Worker RAM角色授權,此處無需配置。
  accessKey: ""
  accessSecret: ""

使用自定義資源跟蹤配置

創建Pod后,控制器會創建Pod同名的自定義資源。以下示例將為Pod配置DNAT規則,將Pod 80端口暴露到公網。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: example
  labels:
    app: example
spec:
  replicas: 1
  selector:
    matchLabels:
      app: example
  template:
    metadata:
      labels:
        app: example
      annotations:
        k8s.aliyun.com/pod-dnat: ""
        k8s.aliyun.com/pod-dnat-expose-port: "80"
    spec:
      containers:
      - name: example
        image: nginx

執行如下命令,讀取poddnats.alibabacloud.com中的分配信息來獲取Pod的外部地址和端口。

kubectl get poddnats -oyaml 

預期輸出:

apiVersion: alibabacloud.com/v1
kind: PodDNAT
metadata:
  creationTimestamp: "2022-09-20T03:26:44Z"
  finalizers:
  - natgw-controller
  generation: 2
  name: example-6cd498d7b-9****
  namespace: default
  ownerReferences:
  - apiVersion: v1
    blockOwnerDeletion: true
    kind: Pod
    name: example-6cd498d7b-9****
    uid: 7af54e1c-eeb7-4fd0-b070-ff99ddbd****
  resourceVersion: "357150"
  uid: 2fad9bb7-cc84-46b4-b6eb-5d15f06c****
spec:
  eni: eni-xxx
  externalIP: 114.55.**.**
  internalIP: 172.16.**.**
  portMapping:
  - externalPort: "512"
    internalPort: "80"
  protocol: tcp
  tableId: ngw-xxx
  vswitch: vsw-xxx
  zoneID: cn-hangzhou-k
status:
  entries:
  - externalIP: 114.55.**.**
    externalPort: "512"
    forwardEntryId: fwd-xxx
    internalIP: 172.16.**.**
    internalPort: "80"
    ipProtocol: tcp

其中

  • externalPort:公網端口,由控制器在端口范圍中分配。

  • externalIP:NAT網關的公網IP,即外部訪問的地址。