我需要创建一个k8s集群,用户有自己的命名空间和应用程序安装在那些可以从Web门户访问的命名空间中(例如,在jupyterhub的情况下提供http://service_ip:service_port
)我正在使用helm图表来安装应用程序和与服务类型混淆的类型所以我需要你的建议,如果我使用nodeport
或我应该使用clusterip
以及我将如何发现并向用户提供服务URL。任何帮助将不胜感激。
答案 0 :(得分:0)
图表来自本书:
如果客户端可以直接或通过隧道(VPN或SSH隧道)访问节点,则将服务公开为NodePort类型。
为此,请使用kubectl expose或kubectl edit更改spec.type。
示例:
apiVersion: v1
kind: Service
metadata:
name: kubernetes-dashboard
namespace: kube-system
spec:
clusterIP: 10.100.96.203
ports:
- port: 443
protocol: TCP
targetPort: 8443
selector:
k8s-app: kubernetes-dashboard
sessionAffinity: None
type: ClusterIP <----- Change to NodePort (or LoadBalancer)
如果K8S在支持K8S cloud providers的AWS,Azure,GCE中运行,则可以通过负载均衡器DNS或IP公开该服务(也可以通过公共互联网公开,具体取决于LB上的访问配置)。将服务规范类型更改为LoadBalancer。
对于AWS云提供商,请参阅K8S AWS Cloud Provider Notes。
K8S ingress提供了一种通过主机名和TLS访问的方法。与OpenShift Route类似。