Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker 如何将URL从localhost更改为Kubernetes中pod内的服务III_Docker_Kubernetes Pod_Kubernetes Service_Kubernetes Deployment - Fatal编程技术网

Docker 如何将URL从localhost更改为Kubernetes中pod内的服务III

Docker 如何将URL从localhost更改为Kubernetes中pod内的服务III,docker,kubernetes-pod,kubernetes-service,kubernetes-deployment,Docker,Kubernetes Pod,Kubernetes Service,Kubernetes Deployment,我有一个在纯docker环境中运行的应用程序。我想在k8s中部署它。因此,我创建了配置映射、部署等。下面是部署到k8s之前的配置文件 config: message: - type: "fusion:expense:expense_type:v1" versions: - version: "v1" handler: request_uri: "http://localhost:808

我有一个在纯docker环境中运行的应用程序。我想在k8s中部署它。因此,我创建了配置映射、部署等。下面是部署到k8s之前的配置文件

  config:
    message:
      - type: "fusion:expense:expense_type:v1"
        versions:
          - version: "v1"
            handler:
              request_uri: "http://localhost:8082/api/v1/expenses/"
          - version: "v2"
            handler:
              request_uri: "http://localhost:8082/api/v2/expenses/"
      - type: "card_type"
        versions:
          - version: "v1"
            handler:
              request_uri: "http://localhost:8082/api/v1/cardtype"
    ossprovider:
      endpoint: "http://localhost:19000"

adaptors:
  endpoint: http://localhost:8092/adaptors/
我创建了一个服务,比如

kind: Service
metadata:
  name: fin-service
spec:
  type: ClusterIP
  ports:
    - port: 8090
      targetPort: 8090 
      protocol: TCP
      name: http
    - port: 8082
      targetPort: 8082 
      protocol: TCP
    - port: 19000
      targetPort: 19000
      protocol: TCP
  selector:
    fin-app
我的部署如下所示:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: fin
  namespace: {{ .Values.namespace }}
  labels:
    fin
spec:
  replicas: {{ .Values.replicaCount }}
  selector:
    matchLabels:
      fin
  template:
    metadata:
      labels:
        fin
    spec:
    {{- with .Values.imagePullSecrets }}
      imagePullSecrets:
        {{- toYaml . | nindent 8 }}
    {{- end }}
      containers:
        - name: {{ .Values.containers.oss_messaginglayer.name }}
          image: {{ .Values.image.oss_messaginglayer.repository }}
          imagePullPolicy: {{ .Values.image.pullPolicy }}
          ports:
            - name: http
              containerPort: 8090
              protocol: TCP
因为我创建了一个服务,所以我想在配置文件中将此服务端点用作fin服务,而不是localhost

app:
  config:
    message:
      - type: "fusion:expense:expense_type:v1"
        versions:
          - version: "v1"
            handler:
              request_uri: "http://fin-service:8082/api/v1/expenses/"
          - version: "v2"
            handler:
              request_uri: "http://fin-service:8082/api/v2/expenses/"
      - type: "card_type"
        versions:
          - version: "v1"
            handler:
              request_uri: "http://fin-service:8082/api/v1/cardtype"
    ossprovider:
      endpoint: "http://fin-service:19000"

adaptors:
  endpoint: http://fin-service:8092/adaptors/

但我得到连接拒绝错误在。我该怎么办?

看起来您的服务是在
默认的
命名空间中创建的,因为您没有明确提供
元数据.namespace
值。另一方面,您的部署将
metadata.namespace
指定为
{{.Values.namespace}}
(看起来您正在使用Helm)

您有两个选择:

  • 在与部署相同的命名空间中创建服务,
    {{
    .Values.namespace}
    ,在这种情况下,您可以继续使用
    fin service
    引用配置中的服务,或
  • 更新您的配置以引用
    fin服务。默认值
    ,因为
    也将解析为您的服务。您还需要确保您的部署正在
    default
    命名空间中运行,否则您的服务吊舱选择器将找不到任何部署吊舱

  • 有关如何在集群内访问服务和POD的更多信息,请参阅Kubernetes的文档。

    Thank you@snormore。我意识到我没有为正在创建的服务指定名称空间的错误。