您可以在虛擬節點上通過集群級別的自定義資源PodNetworking來描述網絡配置,從而支持在虛擬節點上為每個Pod配置獨立的虛擬交換機、安全組。本文介紹如何在ACK ServerlessACK+ECI場景下,通過創建PodNetworking為Pod配置獨立虛擬交換機及安全組。
索引
步驟一:創建網絡定義
在ACK ServerlessACK中,您可以創建多個PodNetworking,來規劃不同網絡平面。在使用前您至少需要創建一個PodNetworking來描述網絡配置。創建PodNetworking的示例如下:
apiVersion: network.alibabacloud.com/v1beta1
kind: PodNetworking
metadata:
name: example
spec:
allocationType:
type: Elastic
selector:
podSelector:
matchLabels:
foo: bar
namespaceSelector:
matchLabels:
foo: bar
securityGroupIDs:
- sg-bpxxxx
vSwitchOptions:
- vsw-bpxxxx
參數說明如下。
參數 | 類型 | 說明 |
allocationType | type | 取值范圍:
重要 ACK Serverless暫不支持Fixed策略。如果將type配置為Fixed固定IP策略時,該PodNetworking會對所有符合selector的Pod生效,并非只對有狀態(StatefulSet)的Pod生效;此外,也無法在PodNetworking資源中配置
|
selector | podSelector |
|
namespaceSelector |
| |
securityGroupIDs | 不涉及 | 可配置多個安全組ID。在ACK Serverless集群中,只有第一個安全組ID會生效,安全組數量小于等于5個。 |
vSwitchOptions | 不涉及 |
|
步驟二:創建Pod
創建Pod時,Pod將通過標簽匹配PodNetworking。如果Pod沒有匹配到任何PodNetworking,則此Pod將使用默認的共享ENI(Elastic Network Interface)上的IP地址。如果Pod匹配到了PodNetworking,則將使用PodNetworking中定義的配置分配ENI。關于Pod標簽的相關內容,請參見標簽。
部署示例
通過下方示例代碼展示Kubernetes如何為符合特定標簽的Pod分配所需的網絡資源,并使用Deployment來創建所需數量的Pod。
---
apiVersion: network.alibabacloud.com/v1beta1
kind: PodNetworking
metadata:
name: example
spec:
allocationType:
type: Elastic
selector:
podSelector:
matchLabels:
foo: bar
# 同VPC下的安全組
securityGroupIDs:
- sg-2zee386juyk226k1cb5h
# 同VPC下的虛擬交換機
vSwitchOptions:
- vsw-2zewh0vanjx3vmjisna6z
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: elastic-podnetworking
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
# 符合podNetworking的podSelector
foo: bar
spec:
containers:
- name: my-container
image: nginx
常見問題
如何判斷Pod是否使用了PodNetworking的網絡配置?
Pod創建后,如果在Pod的annotations中是以k8s.aliyun.com/pod-networking作為鍵值記錄創建該Pod,則表示使用了PodNetworking資源。
apiVersion: v1
kind: Pod
metadata:
annotations:
k8s.aliyun.com/pod-eni: "true"
k8s.aliyun.com/pod-networking: podnetworking
labels:
app: example
pod-ip: elastic
Pod創建后為什么沒有使用PodNetworking中的網絡配置?
Pod標簽和PodNetworking中的標簽需要保持唯一匹配。請檢查兩者是否為唯一匹配。