我有一个复制控制器创build多个POD。 在每个POD中,有一个容器运行一个应用程序。
现在在容器中,它可以调用kubernetes API如下。
KUBE_TOKEN=$(</var/run/secrets/kubernetes.io/serviceaccount/token) curl --silent --insecure --header "Authorization: Bearer $KUBE_TOKEN" \ https://$KUBERNETES_SERVICE_HOST:$KUBERNETES_PORT_443_TCP_PORT/api/v1/namespaces/$POD_NAMESPACE/pods/$POD_NAME
POD_NAME是POD的名称; POD_NAMESPACE是POD的命名空间
包含的应用程序实例组成一个集群。 他们select其中一个应用程序实例作为主控,另外一个是从主控实时复制数据的从属。 当主实例失败时,另一个从实例将被提升为主。
当容器中的应用程序被提升为主人时,我希望主应用程序实例调用kubernetes API,以便所有stream量都进入此POD /容器。
{ "kind": "Service", "apiVersion": "v1", "metadata": { "name": "my-cluster" }, "spec": { "ports": [{ "port": 33379, "targetPort": 33379 }], "type" : "None", "selector": { "name": "<POD_NAME>" } } }
我指定了POD_NAME作为select器,但该服务找不到任何POD。
我怎样才能configuration服务,使所有的stream量去那个POD?
你可以让你的服务select器select一个"master"标签,例如"role": "master" – 那么你可以添加主标签,无论哪一个select作为主人。 可以使用PATCH方法在运行窗格中更改标签。
我指定了POD_NAME作为select器,但该服务找不到任何POD。
name标签的处理方式与select器中的任何其他标签相同。 通常的做法是将名称标签添加到与元数据名称匹配的pod,然后在select器中使用该名称标签,但没有标签的select器将无法find它。