Понимание подсетей в кластере Kubernetes
При использовании GKE я обнаружил, что все узлы в кластере Kubernetes должны находиться в одной сети и в одной подсети. Итак, я хотел понять, как правильно проектировать сети.
У меня есть две услуги A
а также B
и они не имеют никакого отношения между ними. Мой план состоял в том, чтобы использовать один кластер в одном регионе и иметь два узла для каждого из сервисов. A
а также B
в разных подсетях в одной сети.
Тем не менее, кажется, что это не может быть сделано. Другой способ разделить кластер использует namespaces
Однако я уже использую среду разработки с разделами, используя пространства имен.
Я читал о федерации кластеров https://kubernetes.io/docs/concepts/cluster-administration/federation/, однако, мои сервисы небольшие, и они мне не нужны в нескольких кластерах и в синхронизации.
Как правильно настроить netowrking для этих сервисов? Должен ли я просто использовать одну и ту же сеть и подсеть для всех 4 узлов для обслуживания двух служб A
а также B
?
1 ответ
Вы можете ограничить входящий (или исходящий) трафик, используя метки и сетевые политики.
Таким образом, модули могли бы принимать трафик только в том случае, если он был сгенерирован модулем, принадлежащим тому же приложению, или с использованием любой логики, которую вы хотите реализовать.
Вы можете выполнить этот шаг к пошаговому руководству, которое проведет вас по реализации POC.
kubectl run hello-web --labels app=hello \
--image=gcr.io/google-samples/hello-app:1.0 --port 8080 --expose
Пример сетевой политики
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
name: hello-allow-from-foo
spec:
policyTypes:
- Ingress
podSelector:
matchLabels:
app: hello
ingress:
- from:
- podSelector:
matchLabels:
app: foo