Kubernetes :使用名称从服务中引用 containerPorts

问题描述

嗨,documentation 提到了 container.ports 中的 name 字段:

name 如果指定,它必须是 IANA_SVC_NAME 并且在 pod 中是唯一的。 Pod 中的每个命名端口都必须具有唯一的名称。服务可以引用的端口名称

我尝试按如下方式在我的服务中使用它,但解析器出现错误

kind: Pod
apiVersion: v1
Metadata:
  name: banana-app
  labels:
    app: banana
spec:
  containers:
    - name: banana-app
      image: hashicorp/http-echo
      args:
        - "-text=banana"
      ports:
      - containerPort: 5678
        name: bananaport
  terminationGracePeriodSeconds: 0
---

kind: Service
apiVersion: v1
Metadata:
  name: banana-service
spec:
  selector:
    app: banana
  ports:
    - port: bananaport

解析器错误是:

错误:验证“temp.yml”时出错:验证数据时出错:ValidationError(Service.spec.ports[0].port):io.k8s.api.core.v1.ServicePort.port 的无效类型:得到“字符串”,应为“整数”;如果您选择忽略这些错误,请使用 --validate=false 关闭验证

所以我想我没有正确使用端口名称。在我的服务中使用端口名称的正确方法是什么?

提前致谢, 阿卜杜勒加尼

解决方法

port 字段表示 Service 对象侦听的端口,targetPort 表示容器侦听的端口。

试试这个:

kind: Service
apiVersion: v1
metadata:
  name: banana-service
spec:
  selector:
    app: banana
  ports:
  - port: 8080
    targetPort: bananaport

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...