首页 > 解决方案 > Kubernetes:从外部访问

问题描述

我有一个在远程 Kubernetes 集群上运行的烧瓶应用程序,当我在内部访问它时它可以工作。但是,当我尝试从外部访问它时,什么也没有发生。我正在使用 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" 

标签: kuberneteskind

解决方案


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

这里是如何使用 NodePort 服务的指南。

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


推荐阅读