CNI plugin для Alibaba Cloud VPC/ENI
English | 简体中文
Centos 7.4/7.6
.После настройки кластера Kubernetes.
iptables
Forward
на ACCEPT
на каждом узле кластера: iptables -P FORWARD ACCEPT
.rp_filter
в sysctl, установите их на «0» на каждом узле кластера.Убедитесь, что кластер запущен и работает правильно с помощью kubectl get cs
.
Режим VPC.
Режим VPC использует таблицу маршрутизации Aliyun VPC
для подключения модулей. Можно назначить выделенный ENI модулю. Метод установки:
Замените Network
и access_key/access_secret
в terway.yml на подсеть модуля вашего кластера и учётные данные openapi aliyun. Затем используйте kubectl apply -f terway.yml
, чтобы установить Terway в кластере Kubernetes.
Режим вторичного IP ENI.
Режим вторичного IP ENI использует вторичный ip Aliyun ENI
для подключения модулей. Этот режим не ограничен квотами таблицы маршрутизации VPC. Метод установки:
Замените access_key/access_secret
и security_group/vswitches
в terway-multiip.yml на учётные данные и идентификаторы ресурсов openapi aliyun. Затем используйте kubectl apply -f terway-multiip.yml
, чтобы установить Terway в кластере Kubernetes.
Используйте kubectl get ds terway -n kube-system
, чтобы следить за запуском плагина. Установка плагина завершена, когда количество доступных модулей daemonset 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 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@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
на aliyun/eni: 1
в одном контейнере модуля. В следующем примере будет создан модуль Nginx и назначен ENI:
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx
resources:
limits:
aliyun/eni: 1
``` **Использование сетевого плагина Terway для настройки сети в Kubernetes**
* **Установка дополнительного IP-адреса для пода (контейнера)**
В режиме установки дополнительного IP-адреса Terway создаст и выделит дополнительный IP-адрес поду. IP-адрес пода будет находиться в том же диапазоне IP-адресов:
```
[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
cn-hangzhou.i-j6c86lmr8k9rk78ju0nc Ready <none> 12d v1.11.5 192.168.0.154 <none> CentOS Linux 7 (Core) 3.10.0-693.2.2.el7.x86_64 docker://17.6.2
[root@iZj6c86lmr8k9rk78ju0ncZ ~]# kubectl exec -it nginx-64f497f8fd-ckpdm bash
root@nginx-64f497f8fd-ckpdm:/# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 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
3: eth0@if106: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 4a:60:eb:97:f4:07 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 192.168.0.191/32 brd 192.168.0.191 scope global eth0
valid_lft forever preferred_lft forever
* **Ограничение доступа между контейнерами с помощью сетевой политики**
Плагин Terway совместим со стандартными сетевыми политиками 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. Запускаем busybox для проверки подключения к развёртыванию:
```
[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. Настраиваем сетевую политику, разрешая доступ только подам с меткой `run: nginx`:
```
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 может ограничивать входящий и исходящий трафик контейнера. Трафик через лимитную политику в аннотациях пода. Например:
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:
## Build Terway
Необходимые условия:
* Docker >= 17.05 с многоэтапной сборкой
docker build -t acs/terway:latest .
## Тест
Модульный тест:
git clone https://github.com/AliyunContainerService/terway.git
docker run -i --rm
-v $(pwd)/terway:/go/src/github.com/AliyunContainerService/terway
-w /go/src/github.com/AliyunContainerService/terway
sunyuan3/gometalinter:v1 bash -c "go test -race ./..."
Функциональный тест:
cd terway/tests
./test.sh --cluster-id ${clusterid}
--access-key ${ACCESS_KEY_ID} --access-secret ${ACCESS_KEY_SECRET}
--region ${region} --category vpc
--image ${terwayimage}
Пример:
./test.sh --cluster-id c05ef31ec40754f6c99c995963e2e01ed
--access-key ******** --access-secret ********
--region cn-huhehaote --category vpc
--image registry.cn-hongkong.aliyuncs.com/sunyuan/terway:45
## Вклад
Вы можете создавать новые задачи и запросы на вытягивание.
## Сообщество
### DingTalk
Присоединяйтесь к группе DingTalk по QR-коду ниже:
<img src="./docs/images/ding_group_qrcode.jpg" width="300" height="400">
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )