【问题标题】:how to use service name inside kubernetes pod如何在 kubernetes pod 中使用服务名称
【发布时间】:2021-11-30 20:47:25
【问题描述】:

我想替换这两个值 (...*** = @IP) enter image description here

带有服务名称 enter image description here

请问有什么解决办法吗?

【问题讨论】:

    标签: kubernetes charts server service ip


    【解决方案1】:

    例如,假设您的服务规范如下所示:

    apiVersion: v1
    kind: Service
    metadata:
      name: api
      namespace: einstore  # <-- you need to specify the namespace 
      labels:
        app: api
    spec:
      type: NodePort
      ports:
        - port: 8080
          nodePort: 30001
          targetPort: 8080
          protocol: TCP
          name: api
      selector:
        app: api
    

    同样适用于您的部署:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: api
      name: api
      namespace: einstore  # <-- you need to specify the namespace
    spec:
      selector:
    ...
    

    在集群内(例如 pod 到 pod),您可以将服务称为:

    - name: APICORE_SERVER_URL
      value: "http://api.einstore:8080/
    

    【讨论】:

    • 我尝试了这两种方法,但它对我不起作用:/
    • 您能否粘贴您的完整 k8s 服务规范,解释您尝试了什么以及您的问题中的错误消息是什么?
    • 您可以查看下一个 cmets,如果您有任何其他问题,我可以回答您
    • 您需要指定命名空间einstore 否则它将在default 命名空间中运行。你能试试更新的答案吗?
    • 我尝试在我的服务中添加命名空间:einstore 但它不起作用
    【解决方案2】:

    这是我的服务,他的名字是 api

    apiVersion: v1
    kind: Service
    metadata:
      name: api
      labels:
        app: api
    spec:
      type: NodePort
      ports:
        - port: 8080
          nodePort: 30001
          targetPort: 8080
          protocol: TCP
          name: api
      selector:
        app: api
    

    这是我的部署

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: api
      name: api
    spec:
      selector:
        matchLabels:
          app: api
      template:
        metadata:
          labels:
            app: api
        spec:
          containers:
            - name: api
              image: einstore/einstore-core:0.1.1
              env:
                - name: APICORE_STORAGE_LOCAL_ROOT
                  value: "/home/einstore"
                - name: APICORE_SERVER_NAME
                  value: "Einstore - Enterprise AppStore"
                - name: APICORE_SERVER_MAX_UPLOAD_FILESIZE
                  value: "50"
                - name: APICORE_DATABASE_HOST
                  value: "postgres"
                - name: APICORE_DATABASE_USER
                  value: "einstore"
                - name: APICORE_DATABASE_PASSWORD
                  value: "einstore"
                - name: APICORE_DATABASE_DATABASE
                  value: "einstore"
                - name: APICORE_DATABASE_PORT
                  value: "5432"
                - name: APICORE_DATABASE_LOGGING
                  value: "false"
                - name: APICORE_JWT_SECRET
                  value: "secret"
                - name: APICORE_STORAGE_S3_ENABLED
                  value: "false"
                - name: APICORE_STORAGE_S3_BUCKET
                  value: "~"
                - name: APICORE_STORAGE_S3_ACCESS_KEY
                  value: "~"
                - name: APICORE_STORAGE_S3_REGION
                  value: "~"
                - name: APICORE_STORAGE_S3_SECRET_KEY
                  value: "~"
                - name: APICORE_SERVER_URL
                  value: "http://**.***.*.***:30001/"
    

    当我尝试用我的机器@ip 替换 *** 时,一切正常,但我需要更改它,以便有服务的名称,以便我可以在任何其他机器上部署应用程序 第一个解决方案 LGTM 但我收到此错误

    curl http://api.einstore:8080/
    curl: (6) Could not resolve host: api.einstore
    

    注意:einstore= 我的命名空间的名称

    【讨论】:

      猜你喜欢
      • 2021-12-09
      • 2020-05-17
      • 2016-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-24
      • 2022-01-08
      • 2018-04-12
      相关资源
      最近更新 更多