根据user guide中指出的限制,需要进行一些配置才能使螺栓+路由在群集外部可访问。我创建了以下配置,以允许内部网络上的应用程序访问群集内的节点:
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名称,但我不清楚如何执行此操作和/或这样做是否能真正解决标识领导者节点的问题。
答案 0 :(得分:0)
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上,我们将执行以下操作。
在这种情况下,它是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
由于在创建Role或ClusterRole时Container Engine检查权限的方式,您必须首先创建RoleBinding来授予您要创建的角色中包含的所有权限。
kubectl创建clusterrolebinding您的用户群集admin绑定--clusterrole =群集admin --user=your.google.cloud.email@example.org
然后应用以下清单文件之一来部署ExternalDNS。
Manifest (for clusters without RBAC enabled)
Manifest (for clusters with RBAC enabled)
如果要在首次运行时格外小心,请使用--dry-run
。请注意,在空运行模式下运行时,您将看不到任何创建的记录。但是,您可以检查日志并观察将要执行的操作。
您可以按照these instructions
验证其是否有效