如何在 k8s 服务 yaml 中启用端口转发

Dan*_*iel 5 kubernetes kubectl

我正在尝试自动化 Pod 部署,但似乎无法弄清楚如何从 yaml 配置将流量从集群外部转发到 Pod。

只能从本地主机访问,但不能从主 IP 访问。当单独应用“kubectl port-forward --address 0.0.0.0 POD LISTEN_PORT:DEST_PORT”时,它可以工作。

apiVersion: v1
kind: Service
type:
metadata:
  labels:
    name: app1
  name: app1
spec:
  ports:
  - name: "80"
    port: 8888
    targetPort: 80
  selector:
    name: app1
---
apiVersion: v1
kind: Pod
metadata:
  labels:
    name: app1
  name: app1
spec:
  containers:
  - image: nginx
    name: app1
    ports:
    - containerPort: 80
    resources:
      limits:
        cpu: 500m
        memory: "52428800"
      requests:
        cpu: 250m
        memory: "20971520"
  nodeSelector:
    slave: "one"
  restartPolicy: Never
Run Code Online (Sandbox Code Playgroud)

DT.*_*DT. 6

\n

Kubernetes ServiceTypes 允许您指定您想要的服务类型。默认为 ClusterIP

\n
\n

ClusterIP:在集群内部 IP 上公开服务。选择此值使得服务只能从集群内部访问。这是默认的服务类型。

\n

NodePort:在静态端口(NodePort)上公开每个 Node\xe2\x80\x99s IP 上的服务。NodePort 服务路由到的 ClusterIP 服务是自动创建的。您\xe2\x80\x99将能够通过请求从集群外部联系NodePort服务<NodeIP>:<NodePort>

\n

您应该如下更新服务 yaml 以创建 NodePort 以通过 NodePort 访问

\n
apiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    name: app1\n  name: app1\nspec:\n  ports:\n  - name: "80"\n    port: 8888\n    targetPort: 80\n  selector:\n    name: app1\n  type: NodePort\n
Run Code Online (Sandbox Code Playgroud)\n