Kubernetes:从外部访问

Kubernetes: access from outside

我在远程 Kubernetes 集群上有一个 Flask 应用程序 运行,当我在内部访问它时,它可以正常工作。但是,当我尝试从外部访问它时,什么也没有发生。 我正在使用 kind 来创建集群。在本地,我可以通过节点的 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" 

创建 NodePort 或 LoadBalancer(仅适用于受支持的云提供商)service 以在集群外部公开部署。

这里guide介绍如何使用 NodePort 服务。

为了能够通过 NodePort 服务访问应用程序,需要从您访问它的系统访问节点 IP(即应该在同一网络中)。