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

Kubernetes 如何在k8s服务yaml中启用端口转发,kubernetes,kubectl,Kubernetes,Kubectl,我正在尝试自动化pod部署,但似乎不知道如何从集群外部将流量从yaml配置转发到pod 只能从本地主机进行访问,但在访问主IP时不能进行访问。 当单独应用“kubectl端口转发-地址0.0.0.0 POD侦听_端口:DEST_端口”时,它可以工作 apiVersion: v1 kind: Service type: metadata: labels: name: app1 name: app1 spec: ports: - name: "80" port: 88

我正在尝试自动化pod部署,但似乎不知道如何从集群外部将流量从yaml配置转发到pod

只能从本地主机进行访问,但在访问主IP时不能进行访问。 当单独应用“kubectl端口转发-地址0.0.0.0 POD侦听_端口:DEST_端口”时,它可以工作

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
Kubernetes服务类型允许您指定所需的服务类型。默认值是ClusterIP

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

NodePort:在NodePort的静态端口公开每个节点IP上的服务。自动创建NodePort服务路由到的ClusterIP服务。您可以通过请求从集群外部联系NodePort服务:

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

apiVersion: v1
kind: Service
type:
metadata:
  labels:
    name: app1
  name: app1
spec:
  ports:
  - name: "80"
    port: 8888
    targetPort: 80
  selector:
    name: app1
  type: NodePort
Kubernetes服务类型允许您指定所需的服务类型。默认值是ClusterIP

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

NodePort:在NodePort的静态端口公开每个节点IP上的服务。自动创建NodePort服务路由到的ClusterIP服务。您可以通过请求从集群外部联系NodePort服务:

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

apiVersion: v1
kind: Service
type:
metadata:
  labels:
    name: app1
  name: app1
spec:
  ports:
  - name: "80"
    port: 8888
    targetPort: 80
  selector:
    name: app1
  type: NodePort

您需要将服务类型更新为NodePort

类型:节点端口


然后,您就可以使用

访问服务。您需要将服务类型更新为NodePort

类型:节点端口

然后,您将能够使用入口访问服务:公开从集群外部到集群内服务的HTTP和HTTPS路由。流量路由由入口资源上定义的规则控制

    internet
        |
   [ Ingress ]
   --|-----|--
   [ Services ]
入口不是一种服务类型,而是一个对象,充当反向代理和集群的单一入口点,将请求路由到不同的服务

要创建基本入口

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: test-ingress
spec:
  backend:
    serviceName: testsvc
    servicePort: 80
入口:公开从集群外部到集群内服务的HTTP和HTTPS路由。流量路由由入口资源上定义的规则控制

    internet
        |
   [ Ingress ]
   --|-----|--
   [ Services ]
入口不是一种服务类型,而是一个对象,充当反向代理和集群的单一入口点,将请求路由到不同的服务

要创建基本入口

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: test-ingress
spec:
  backend:
    serviceName: testsvc
    servicePort: 80

我尝试了LoadBalancer和NodePort两种类型,但仍然无法访问。正如您在问题上所说的,您使用的是主IP。。我希望您已经尝试过使用pod所在节点的ip。。使用kubectl get pod-o Wide获取节点ip我已经尝试了两种负载均衡器和节点端口类型,但仍然无法访问。正如您在问题上所说,您使用的是主ip。。我希望您已经尝试过使用pod所在节点的ip。。使用kubectl get pod-o wide获取节点ip对于上面的示例,我已经尝试过这种入口,但仍然无法访问。让我知道你是否做得正确:apiVersion:networking.k8s.io/v1beta1种类:入口元数据:名称:测试入口规范:backend:serviceName:app1 servicePort:8888对于上面的示例,我尝试过这个入口,但仍然无法访问。请告诉我您是否正确操作:apiVersion:networking.k8s.io/v1beta1种类:入口元数据:名称:测试入口规范:后端:服务名称:app1服务端口:8888