Kubernetes GKE上Neo4j因果簇的前导节点暴露
根据中指出的限制,需要进行一些配置,以便在集群外部访问螺栓+布线。我创建了以下配置,以允许内部网络上的应用程序访问集群内的节点:Kubernetes GKE上Neo4j因果簇的前导节点暴露,kubernetes,neo4j,Kubernetes,Neo4j,根据中指出的限制,需要进行一些配置,以便在集群外部访问螺栓+布线。我创建了以下配置,以允许内部网络上的应用程序访问集群内的节点: apiVersion: v1 kind: Service metadata: name: mygraph-neo4j-access labels: statefulset.kubernetes.io/pod-name: mygraph-neo4j-core-0 annotations: cloud.google.com/load-balan
apiVersion: v1
kind: Service
metadata:
name: mygraph-neo4j-access
labels:
statefulset.kubernetes.io/pod-name: mygraph-neo4j-core-0
annotations:
cloud.google.com/load-balancer-type: "Internal"
spec:
type: LoadBalancer
externalTrafficPolicy: Local
loadBalancerIP: 10.0.0.0
ports:
- name: http
port: 7474
targetPort: 7474
- name: https
port: 7473
targetPort: 7473
- name: bolt
port: 7687
targetPort: 7687
selector:
statefulset.kubernetes.io/pod-name: mygraph-neo4j-core-0
这似乎可以正常工作,除非节点崩溃并且另一个节点被指定为先导节点。在这种情况下,写入现在指向一个跟随节点,写入失败
作为GKE的新手,我想知道是否有不同的标签/选择器可用于识别特定节点名称之外的领导节点,如果没有,还有什么其他方法可用于识别领导节点
文档建议为每个节点分配一个外部有效的DNS名称,但我不清楚如何做到这一点和/或这是否真的能解决识别领导节点的问题。这里是一个分步指导 1.创建一个包含托管DNS记录的DNS区域。
$ gcloud dns managed-zones create "external-dns-test-gcp-zalan-do" \
--dns-name "external-dns-test.gcp.zalan.do." \
--description "Automatically managed zone by kubernetes.io/external-dns"
2.记下分配给新区域的名称服务器
$ gcloud dns record-sets list \
--zone "external-dns-test-gcp-zalan-do" \
--name "external-dns-test.gcp.zalan.do." \
--type NS
NAME TYPE TTL DATA
external-dns-test.gcp.zalan.do. NS 21600 ns-cloud-e1.googledomains.com.,ns-cloud-e2.googledomains.com.,ns-cloud-e3.googledomains.com.,ns-cloud-e4.googledomains.com.
通过在父区域中添加相应的NS记录,告知父区域在何处查找此区域的DNS记录。假设父区域是“gcp zalan do”,域是“gcp.zalan.do”,并且它也托管在Google上,我们将执行以下操作
$ gcloud dns record-sets transaction start --zone "gcp-zalan-do"
$ gcloud dns record-sets transaction add ns-cloud-e{1..4}.googledomains.com. \
--name "external-dns-test.gcp.zalan.do." --ttl 300 --type NS --zone "gcp-zalan-do"
$ gcloud dns record-sets transaction execute --zone "gcp-zalan-do"
在本例中,它是ns cloud-{e1-e4}.googledomains.com。但您的可能略有不同,例如{a1-a4}、{b1-b4}等
通过在父区域中添加相应的NS记录,告知父区域在何处查找此区域的DNS记录。假设父区域是“gcp zalan do”,域是“gcp.zalan.do”,并且它也托管在Google上,我们将执行以下操作
$ gcloud dns record-sets transaction start --zone "gcp-zalan-do"
$ gcloud dns record-sets transaction add ns-cloud-e{1..4}.googledomains.com. \
--name "external-dns-test.gcp.zalan.do." --ttl 300 --type NS --zone "gcp-zalan-do"
$ gcloud dns record-sets transaction execute --zone "gcp-zalan-do"
3.部署外部DNS
由于容器引擎在创建角色或ClusterRole时检查权限的方式,因此必须首先创建一个RoleBinding,该RoleBinding授予您要创建的角色中包含的所有权限
kubectl创建clusterrolebinding您的用户集群管理绑定——clusterrole=cluster admin——user=your.google.cloud。email@example.org
然后应用以下清单文件之一部署ExternalDNS
如果您想在第一次运行时格外小心,请使用--干运行
。请注意,在干运行模式下运行时,不会看到创建的任何记录。但是,您可以检查日志并观察将要执行的操作
您可以验证它是否在以下情况下工作