如何通过https访问kubernetes服务?

如何通过https访问kubernetes服务?,kubernetes,Kubernetes,这是我的群集信息 kubectl cluster-info Kubernetes master is running at https://129.146.10.66:6443 Heapster is running at https://129.146.10.66:6443/api/v1/proxy/namespaces/kube-system/services/heapster KubeDNS is running at https://129.146.10.66:6443/api/v1/p

这是我的群集信息

kubectl cluster-info
Kubernetes master is running at https://129.146.10.66:6443
Heapster is running at https://129.146.10.66:6443/api/v1/proxy/namespaces/kube-system/services/heapster
KubeDNS is running at https://129.146.10.66:6443/api/v1/proxy/namespaces/kube-system/services/kube-dns
因此,我有一个服务(mysqlbrokerservice)作为NodePort运行,配置如下

kubectl describe svc mysqlbrokerservice
Name:                        mysqlbrokerservice
Namespace:                mysqlbroker
Labels:                        <none>
Annotations:                <none>
Selector:                app=mysqlbroker
Type:                        NodePort
IP:                        10.99.194.191
Port:                        mysqlbroker        8080/TCP
NodePort:                mysqlbroker        30000/TCP
Endpoints:                10.244.1.198:8080
Session Affinity:        None
Events:                        <none>
curl只是坐在那里没有反应。然后我查看了我的pod日志,它没有显示收到了任何请求


有人能解释一下我做错了什么吗?如果我希望通过https公开服务,理想的解决方案是什么?

文档中说它需要的是端口名,而不是端口号。你试过以下方法吗

curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET  https://129.146.10.66:6443/api/v1/namespaces/mysqlbroker/services/mysqlbrokerservice:mysqlbroker/proxy/v2/catalog --header "Authorization: Bearer $TOKEN" --insecure

如果单击
kubectl cluster info
提供的任何URL,您将看到浏览器提示您接受不安全的TLS连接

要使HTTPs适用于此特定地址,您需要购买为主机名颁发的TLS证书(在本例中为IP地址,您不能为IP地址购买证书)。另一个选项是将Kubernetes群集的根证书添加到计算机的受信任根中,但这不会使它在其他计算机上工作

所以我假设您只是想让外部世界通过HTTPs访问运行在Kubernetes上的应用程序:


为此,我建议实际购买域名(或重用子域),为该主机名购买SSL/TLS证书,并使用入口配置带有HTTPs终端的负载平衡器。(如果您使用的是GKE,Google Load Balancer,否则它会配置一个本地nginx实例来执行此任务。)

但我甚至无法访问该服务。购买可信证书和域是我希望在我的开发环境之外安装它的时候。Kubernetes有一个自签名证书,我现在可以使用它。我要指出的问题是,我如何通过主服务器从外部访问服务,例如kub dns服务。您是否可以在这里查看我的问题:?+用于参考kubernetes根证书。您找到这个问题的答案了吗?可以分享吗?你能在这里看看我的问题吗:
curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET  https://129.146.10.66:6443/api/v1/namespaces/mysqlbroker/services/mysqlbrokerservice:mysqlbroker/proxy/v2/catalog --header "Authorization: Bearer $TOKEN" --insecure