Docker 如何将URL从localhost更改为Kubernetes中pod内的服务III
我有一个在纯docker环境中运行的应用程序。我想在k8s中部署它。因此,我创建了配置映射、部署等。下面是部署到k8s之前的配置文件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
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。我意识到我没有为正在创建的服务指定名称空间的错误。