Terway 网络插件
CNI плагин для Alibaba Cloud VPC/ENI
English | 简体中文
После установки необходимо:
iptables -P FORWARD ACCEPT
.Чтобы убедиться, что кластер установлен, используйте команду kubectl get cs
.
У плагина Terway есть два режима установки:
Режим VPC: В режиме VPC используется маршрутизация Alibaba VPC для соединения сетей. Можно использовать отдельный ENI для Pod. Для установки выполните следующие шаги:
kubectl apply -f terway.yml
.Режим ENI с несколькими IP: В этом режиме используется вспомогательный IP ENI Alibaba для соединения сетей, не ограничиваясь правилами маршрутизации VPC. Для установки выполните следующие действия:
kubectl apply -f terway-multiip.yml
.Когда плагин Terway будет запущен на каждом узле после выполнения команды kubectl get ds terway
, установка считается успешной.
В режиме установки VPC, если контейнер не имеет специальной конфигурации, Terway выделит адрес из диапазона podCidr узла и настроит его для контейнера. Например:
[root@iZj6c86lmr8k9rk78ju0ncZ ~]# kubectl run -it --rm --image busybox busybox
If you don't see a command prompt, try pressing enter.
/ # ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
3: eth0@if7: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue
link/ether 46:02:02:6b:65:1e brd ff:ff:ff:ff:ff:ff
/ # ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1
link/loopback 000:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
3: eth0@if7: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue
link/ether 46:02:02:6b:65:1e brd ff:ff:ff:ff:ff:ff
inet 172.30.0.4/24 brd 172.30.0.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::4402:2ff:fe6b:651e/64 scope link
valid_lft forever preferred_lft forever
В режиме установки VPC добавьте требование к ENI в запросе ресурсов Pod: aliyun/eni: 1
. В следующем примере создаётся Pod Nginx и выделяется ENI:
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx
resources:
limits:
aliyun/eni: 1
Затем можно выполнить команду exec в контейнере, чтобы увидеть, как Terway создал и привязал эластичный сетевой адаптер ECS:
[root@iZj6c86lmr8k9rk78ju0ncZ ~]# kubectl exec -it nginx sh
# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UNKNOWN qlen 1000
link/ether 00:16:3e:02:38:05 brd ff:ff:ff:ff:ff:ff
inet 172.31.80.193/20 brd 172.31.95.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::216:3eff:fe02:3805/64 scope link
valid_lft forever preferred_lft forever
4: veth1@if8: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP
link/ether 1e:60:c7:cb:1e:0e brd ff:ff:ff:ff:ff:ff
inet6 fe80::1c60:c7ff:fecb:1e0e/64 scope link
valid_lft forever preferred_lft forever
В режиме многоадресной установки ENI Terway создаст и выделит IP-адреса ENI и дополнительные IP-адреса на сетевом адаптере ENI для использования Pod. IP-адрес Pod будет совпадать с диапазоном IP-адресов VPC и VSwitch:
[root@iZj6c86lmr8k9rk78ju0ncZ ~]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE
nginx-64f497f8fd-ckpdm 1/1 Running 0 4d 192.168.0.191 cn-hangzhou.i-j6c86lmr8k9rk78ju0nc <none>
[root@iZj6c86lmr8k9rk78ju0ncZ ~]# kubectl get node -o wide cn-hangzhou.i-j6c86lmr8k9rk78ju0nc
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
``` **Использование NetworkPolicy для ограничения доступа между контейнерами**
Terway плагин совместим со стандартным NetworkPolicy в K8S для управления доступом между контейнерами. Например:
1. Запустите сервис для тестирования:
```
[root@iZbp126bomo449eksjknkeZ ~]# kubectl run nginx --image=nginx --replicas=2
deployment "nginx" created
[root@iZbp126bomo449eksjknkeZ ~]# kubectl expose deployment nginx --port=80
service "nginx" exposed
```
2. Убедитесь, что к этому сервису можно получить доступ:
```
[root@iZbp126bomo449eksjknkeZ ~]# kubectl run busybox --rm -ti --image=busybox /bin/sh
If you don't see a command prompt, try pressing enter.
/ # wget --spider --timeout=1 nginx
Connecting to nginx (172.21.0.225:80)
/ #
```
3. Настройте правила network policy, чтобы разрешить доступ только определённым сервисам с метками:
```
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
name: access-nginx
spec:
podSelector:
matchLabels:
run: nginx
ingress:
- from:
- podSelector:
matchLabels:
access: "true"
```
4. Протестируйте, что контейнеры без указанных меток не могут получить доступ к сервису, а контейнеры с указанными метками могут:
```
[root@iZbp126bomo449eksjknkeZ ~]# kubectl run busybox --rm -ti --image=busybox /bin/sh
If you don't see a command prompt, try pressing enter.
/ # wget --spider --timeout=1 nginx
Connecting to nginx (172.21.0.225:80)
wget: download timed out
/ #
[root@iZbp126bomo449eksjknkeZ ~]# kubectl run busybox --rm -ti --labels="access=true" --image=busybox /bin/sh
If you don't see a command prompt, try pressing enter.
/ # wget --spider --timeout=1 nginx
Connecting to nginx (172.21.0.225:80)
/ #
```
**Ограничение входящего и исходящего трафика для контейнеров**
Terway плагин использует правила ограничения скорости на сетевых картах контейнеров для контроля трафика. Это позволяет избежать перегрузки трафика на узле из-за одного контейнера. Правила входящего и исходящего трафика настраиваются через аннотации `k8s.aliyun.com/ingress-bandwidth` и `k8s.aliyun.com/egress-bandwidth`, например:
apiVersion: v1 kind: Pod metadata: name: nginx annotations: k8s.aliyun.com/ingress-bandwidth: 1m k8s.aliyun.com/egress-bandwidth: 1m spec: nodeSelector: kubernetes.io/hostname: cn-shanghai.i-uf63p6s96kf4jfh8wpwn containers:
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )