如何通过https访问kubernetes服务?

2024-02-26

这是我的集群信息

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>

我可以通过pod运行的节点的公共IP访问服务,如下所示http://129.146.34.181:30000/v2/catalog http://129.146.34.181:30000/v2/catalog.

然后我想看看是否可以通过 https 访问该服务。我按照以下方向https://kubernetes.io/docs/tasks/access-application-cluster/access-cluster/#manually-constructing-apiserver-proxy-urls https://kubernetes.io/docs/tasks/access-application-cluster/access-cluster/#manually-constructing-apiserver-proxy-urls

我按照示例并使用curl来获取资源。 这是命令。 129.146.10.66:6443是我的主IP。

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:8080/proxy/v2/catalog --header "Authorization: Bearer $TOKEN" --insecure
HTTP/1.0 200 Connection established

卷曲只是坐在那里没有任何反应。然后我查看了我的 pod 日志,它没有显示收到任何请求。

有人可以解释我在这里做错了什么吗?如果我希望通过 https 公开服务,理想的解决方案是什么?


如果您单击由kubectl cluster-info您将看到浏览器提示您接受不安全的 TLS 连接。

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

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

为此,我建议实际购买一个域名(或重用子域),为该主机名购买 SSL/TLS 证书,并使用 Ingress 配置带有 HTTPs 终止的负载均衡器。https://kubernetes.io/docs/concepts/services-networking/ingress/#tls https://kubernetes.io/docs/concepts/services-networking/ingress/#tls(如果您使用 GKE、Google 负载均衡器,否则它会配置本地 nginx 实例来执行此任务。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何通过https访问kubernetes服务? 的相关文章

随机推荐