Kubernetes服务/ pod / docker东西的URL是什么

时间:2020-08-23 04:37:18

标签: kubernetes

我需要将一个ouchDB实例的地址硬编码到我的kubernetes集群中的另一台服务器上。我对kubernetes并不十分熟悉,但是我知道每次重新构建集群或重新构建Pod时IP都会改变。所以我不能使用它。

该kubernetes服务的URL是什么/应该将什么硬编码到我的Server Docker Image中,以便它将始终在系统中找到CouchDB服务器。我认为它将是这种格式

<service-name>.<namespace>.svc.cluster.local:<service-port>

Picture of the interface

# YAML for launching the server
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: kino-couch
  labels:
    app: kino-couch
spec:
  serviceName: orderer
  # Single instance of the Orderer Pod is needed
  replicas: 1
  selector:
    matchLabels:
      app: kino-couch
  template:
    metadata:
      labels:
        app: kino-couch
    spec:
      containers:
      - name: kino-couch
        ports:
        - containerPort: 5984
        # Image used
        image: dpacchain/development:dpaccouch

enter image description here

如果“ wget 172.17.0.2:5984”有效,应将“ 172.17.0.2”替换为

以下内容不正确

wget kino-couch-0.couch-service.default.svc.cluster.local:5984

wget kino-couch-0.couch-service.default.svc.cluster.local:5984

wget kino-couch-0.kino-couch.default.svc.cluster.local:5984

wget kino-couch-0.kino-couchdb.default.svc.cluster.local:5984

wget kino-couch-0.kino-couchdb.svc.cluster.local:5984

1 个答案:

答案 0 :(得分:2)

对于StatefulSet,您需要创建一个Headless service来负责Pods的网络标识,以证明其稳定的DNS条目。请注意以下示例中的clusterIP: None

apiVersion: v1
kind: Service
metadata:
  name: couch-service
  labels:
    app: kino-couch
spec:
  ports:
  - port: 5984
  clusterIP: None
  selector:
    app: kino-couch

有状态集需要在serviceName中引用上述服务。因此,statefulset yaml如下所示

# YAML for launching the server
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: kino-couch
  labels:
    app: kino-couch
spec:
  serviceName: couch-service
  # Single instance of the Orderer Pod is needed
  replicas: 1
  selector:
    matchLabels:
      app: kino-couch
  template:
    metadata:
      labels:
        app: kino-couch
    spec:
      containers:
      - name: kino-couch
        ports:
        - containerPort: 5984
        # Image used
        image: dpacchain/development:dpaccouch

然后,作为客户端,您可以使用couch-service.<namespace>.svc.cluster.local:5984来访问它,以连接到任何CouchDB Pod。

如果要连接到特定的Pod,请使用kino-couch-0.couch-service.<namespace>.svc.cluster.local:5984。通常,这是在彼此之间连接ouchDB吊舱以创建集群所必需的。