这很奇怪。我在设置过程中遗漏了什么
master kubernetes-elasticsearch-cluster # kubectl get svc kubernetes
NAME LABELS SELECTOR IP(S) PORT(S)
kubernetes component=apiserver,provider=kubernetes <none> 10.100.0.1 8080/TCP
我似乎无法从群集中的任何位置到达10.100.0.1地址。但是,某些其他clusterIP地址可从节点
访问master kubernetes-elasticsearch-cluster # kubectl get svc elasticsearch
NAME LABELS SELECTOR IP(S) PORT(S)
elasticsearch component=elasticsearch,role=client component=elasticsearch,role=client 10.100.213.223 9200/TCP
我相信当我查看elasticsearch pods的日志时,这会导致我遇到的问题。
javax.ws.rs.ProcessingException: javax.net.ssl.SSLHandshakeException: SSLHandshakeException invoking https://10.100.0.1:8080/api/v1/namespaces/default/endpoints/elasticsearch-discovery: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
但如果我检查与另一个地址相同的路径,则会重新调整项目
# curl http://10.1.141.41:8080/api/v1/namespaces/default/endpoints/elasticsearch-discovery
{
"kind": "Endpoints",
"apiVersion": "v1",
"metadata": {
......
答案 0 :(得分:1)
您的堆栈跟踪实际上表示您可以到达10.100.0.1
,但您的客户端无法验证Kubernetes apiserver提供的证书。如果要使用SSL进行连接,则应验证Kubernetes apiserver使用的证书是否为10.100.0.1
作为主题备用名称字段中的IP,或者您可以使用服务的DNS名称(同样确保它在证书中列出)。
答案 1 :(得分:0)
首先,我必须制作证书 ./make-ca-cert.sh IP :, IP:10.0.0.1,DNS:kubernetes,DNS:kubernetes.default,DNS:kubernetes.default.svc,DNS:kubernetes.default.svc.cluster.local
然后我不得不更新kube api服务器和kube控制器 KUBE-API服务器
--client-ca-file=/srv/kubernetes/ca.crt
--tls-cert-file=/srv/kubernetes/server.cert
--tls-private-key-file=/srv/kubernetes/server.key
key
-- admission_control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota
kube-controller-manager
--root-ca-file=/srv/kubernetes/ca.crt
--service-account-private-key-file=/srv/kubernetes/server.key
然后我将ca.crt和kubecfg。{crt | key}更改为小兵,并从kubeconfig文件中正确调用它们 的/ var / lib中/ kubelet / kubeconfig
apiVersion: v1
kind: Config
users:
- name: kubelet
user:
client-certificate: /etc/ssl/private/kubecfg.crt
client-key: /etc/ssl/private/kubecfg.key
clusters:
- name: cluster01
cluster:
certificate-authority: /etc/ssl/certs/ca.crt
contexts:
- context:
cluster: cluster01
user: kubelet
name: service-account-context
current-context: service-account-context
最后感谢lewismarshall https://github.com/UKHomeOffice/docker-elasticsearch/blob/master/examples/kubernetes.md
我更新了所有rc-yaml文件。
我现在得到200! 掌握kubernetes-elasticsearch-cluster#curl http://10.244.52.18:9200 { “身份”:200, ....
现在我无法弄清楚为什么我无法在客户端节点上加载插件。
线程“main”中的异常java.lang.IllegalArgumentException:无法解析占位符'DISCOVERY_SERVICE'