我正在尝试在 GKE 上使用 Helm 3 在 Kubernetes 1.16 上运行 elasticsearch。我知道尚不支持 1.16 和 3。我想准备一个 PR 以使其兼容。我正在使用来自https://github.com/elastic/helm-charts的 helm 图表。
如果我使用原始图表 7.6.1,则 pod 创建失败,原因是create Pod elasticsearch-master-0 in StatefulSet elasticsearch-master failed error: pods "elasticsearch-master-0" is forbidden: unable to validate against any pod security policy: [spec.volumes[1]: Invalid value: "projected": projected volumes are not allowed to be used]
. 因此我创建了以下补丁:
diff --git a/elasticsearch/values.yaml b/elasticsearch/values.yaml
index 053c020..fd9c37b 100755
--- a/elasticsearch/values.yaml
+++ b/elasticsearch/values.yaml
@@ -107,6 +107,7 @@ podSecurityPolicy:
- secret
- configMap
- persistentVolumeClaim
+ - projected
persistence:
enabled: true
使用 master/d9ccb5a 上的这个补丁和标签 7.6.1(都尝试过),failed to resolve host [elasticsearch-master-headless]
由于java.net.UnknownHostException: elasticsearch-master-headless
.
我不明白为什么名称解析不起作用,因为 1.16 中没有引入任何更改,它使用 Kubernetes 名称 afaik 更改名称解析。如果我尝试elasticsearch-master-headless
从以 开头的 pod 中的 shell执行 pingkubectl exec
操作,我也无法访问它。
我尝试联系名称服务器/etc/resolv.conf
,telnet
因为它允许指定特定端口:
[elasticsearch@elasticsearch-master-1 ~]$ cat /etc/resolv.conf
search default.svc.cluster.local svc.cluster.local cluster.local us-central1-a.c.myproject.internal c.myproject.internal google.internal
nameserver 10.23.240.10
options ndots:5
[elasticsearch@elasticsearch-master-1 ~]$ telnet 10.23.240.10
Trying 10.23.240.10...
^C
[elasticsearch@elasticsearch-master-1 ~]$ telnet 10.23.240.10 53
Trying 10.23.240.10...
telnet: connect to address 10.23.240.10: Connection refused
我用 myproject 混淆了项目 ID。
该补丁已被提议与https://github.com/elastic/helm-charts/pull/496上的其他更改一起在上游合并。