Kubernetes: доступ извне

У меня есть приложение flask, работающее на удаленном кластере Kubernetes, и когда я обращаюсь к нему изнутри, оно работает. Однако когда я пытаюсь получить к нему доступ извне, ничего не происходит. Я использую вид для создания кластера. Локально я могу получить доступ к приложению flask через IP-адрес узла. Я не знаю, как получить доступ к сервису извне, нужно ли мне делать что-то еще, чтобы получить доступ к приложению.

apiVersion: v1
vi serkind: Service
metadata:
  name: iweblens-svc 
  labels:
    app: flaskapp 
spec:
  type: NodePort 
  ports:
  - port: 5000
    targetPort: 5000
    protocol: TCP
  selector:
    app: flaskapp


kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
kubeadmConfigPatches:
- |
  apiVersion: kubelet.config.k8s.io/v1beta1
  kind: KubeletConfiguration
  evictionHard:
    nodefs.available: "0%"
kubeadmConfigPatchesJSON6902:
- group: kubeadm.k8s.io
  version: v1beta2
  kind: ClusterConfiguration
  patch: |
    - op: add
      path: /apiServer/certSANs/-
      value: my-hostname
nodes:
- role: control-plane
- role: worker


apiVersion: apps/v1
kind: Deployment
metadata:
  name: flaskapp 
  labels:
    app: flaskapp 
spec:
  replicas: 1
  selector:
    matchLabels: 
      app: flaskapp
  template:
    metadata:
      labels:
        app: flaskapp 
    spec:
      containers:
      - name: flaskapp
        image: myimage 
        imagePullPolicy: Never
        ports:
        - containerPort: 5000 
        resources:
          limits:
            cpu: "0.5"
          requests: 
            cpu: "0.5" 

1 ответ

Решение

Создание NodePort или LoadBalancer (работает только на поддерживаемых провайдеров облачных) услуги, чтобы разоблачить развертывание вне кластера.

Вот руководство по использованию службы NodePort.

Чтобы иметь возможность доступа к приложению через службу NodePort, IP-адрес узла должен быть доступен (т.е. должен находиться в той же сети) из системы, в которой вы к нему обращаетесь.

Другие вопросы по тегам