我正试着把我的头转到K8s从docker compose过来。我想设置我的第一个吊舱与两个容器,我推到一个注册表。以下问题:
如何通过DNS将IP连接到环境变量中,以便注册服务器能够连接到领事?参见args consul://consul:8500中的容器注册程序。执政官需要和环境保护局一起更换。
{
"kind": "Pod",
"apiVersion": "v1",
"metadata": {
"name": "service-discovery",
"labels": {
"name": "service-discovery"
}
},
"spec": {
"containers": [
{
"name": "consul",
"image": "eu.gcr.io/{myproject}/consul",
"args": [
"-server",
"-bootstrap",
"-advertise=$(MY_POD_IP)"
],
"env": [{
"name": "MY_POD_IP",
"valueFrom": {
"fieldRef": {
"fieldPath": "status.podIP"
}
}
}],
"imagePullPolicy": "IfNotPresent",
"ports": [
{
"containerPort": 8300,
"name": "server"
},
{
"containerPort": 8400,
"name": "alt-port"
},
{
"containerPort": 8500,
"name": "ui-port"
},
{
"containerPort": 53,
"name": "udp-port"
},
{
"containerPort": 8443,
"name": "https-port"
}
]
},
{
"name": "registrator",
"image": "eu.gcr.io/{myproject}/registrator",
"args": [
"-internal",
"-ip=$(MY_POD_IP)",
"consul://consul:8500"
],
"env": [{
"name": "MY_POD_IP",
"valueFrom": {
"fieldRef": {
"fieldPath": "status.podIP"
}
}
}],
"imagePullPolicy": "Always"
}
]
}
}发布于 2017-02-04 17:36:24
向其他应用程序公开荚是用Kubernetes中的服务完成的。一旦定义了服务,就可以在豆荚中使用与该服务相关的环境变量。直接暴露Pod并不是一个好主意,因为Pods可能会重新安排时间。
例如在使用这样的服务时:
apiVersion: v1
kind: Service
metadata:
name: consul
namespace: kube-system
labels:
name: consul
spec:
ports:
- name: http
port: 8500
- name: rpc
port: 8400
- name: serflan
port: 8301
- name: serfwan
port: 8302
- name: server
port: 8300
- name: consuldns
port: 8600
selector:
app: consul相关的环境变量将是CONSUL_SERVICE_IP
无论如何,似乎有些人因为某些原因而停止使用该环境变量,如这里所述。
https://stackoverflow.com/questions/42041928
复制相似问题