Kubernetes:为什么我的 NodePort 无法获取外部 ip?
Kubernetes: Why my NodePort can not get an external ip?
环境信息:
Computer detail: One master node and four slave nodes. All are CentOS Linux release 7.8.2003 (Core).
Kubernetes version: v1.18.0.
Zero to JupyterHub version: 0.9.0.
Helm version: v2.11.0
最近尝试在kubernetes上部署“从零到Jupyterhub”。我的 jupyterhub 配置文件如下:
config.yaml
proxy:
secretToken: "2fdeb3679d666277bdb1c93102a08f5b894774ba796e60af7957cb5677f40706"
service:
type: NodePort
nodePorts:
http: 30080
https: 30443
singleuser:
storage:
dynamic:
storageClass: local-storage
capacity: 10Gi
注意: 我将服务类型设置为 NodePort
,因为我没有任何云提供商(部署在我的实验室服务器集群上),我尝试使用 nginx-ingress
然后也失败了,这就是我不使用 LoadBalance
.
的原因
但是当我使用这个配置文件通过 Helm
安装 jupyterhub 时,我无法从浏览器访问 jupyterhub,甚至所有 Pods
运行。这些 pods 详情如下:
kubectl get pod --namespace jhub
NAME READY STATUS RESTARTS AGE
continuous-image-puller-8gxxk 1/1 Running 0 27m
continuous-image-puller-8tmdh 1/1 Running 0 27m
continuous-image-puller-lwdcx 1/1 Running 0 27m
continuous-image-puller-pszsr 1/1 Running 0 27m
hub-7b9cbbcf59-fbppq 1/1 Running 0 27m
proxy-6b699b54c8-2pxmb 1/1 Running 0 27m
user-scheduler-65f4cbb9b7-9vmfr 1/1 Running 0 27m
user-scheduler-65f4cbb9b7-lqfrh 1/1 Running 0 27m
及其服务如下:
kubectl get service --namespace jhub
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hub ClusterIP 10.10.55.78 <none> 8081/TCP 28m
proxy-api ClusterIP 10.10.27.133 <none> 8001/TCP 28m
proxy-public NodePort 10.10.97.11 <none> 443:30443/TCP,80:30080/TCP 28m
好像效果不错吧? (我猜的。)但事实是我无法使用ip 10.10.97.11
访问jupyter主页面,我也没有获得任何外部ip。
所以,我的问题是:
- 我的配置有问题吗?
- 如何获取外网ip?
最后,谢谢你让我度过了如此美好的一天!
对于 NodePort
服务,您将无法获得 EXTERNAL-IP
。您不能使用 CLUSTER-IP
从 kubernetes 集群外部访问它,因为 CLUSTER-IP
用于从 kubernetes 集群内部访问它,通常是从另一个 pod.For 从您需要的 kubernetes 集群外部访问使用 NodeIP:NodePort
其中 NodeIP
是您的 kubernetes 节点 IP 地址。
环境信息:
Computer detail: One master node and four slave nodes. All are CentOS Linux release 7.8.2003 (Core).
Kubernetes version: v1.18.0.
Zero to JupyterHub version: 0.9.0.
Helm version: v2.11.0
最近尝试在kubernetes上部署“从零到Jupyterhub”。我的 jupyterhub 配置文件如下:
config.yaml
proxy:
secretToken: "2fdeb3679d666277bdb1c93102a08f5b894774ba796e60af7957cb5677f40706"
service:
type: NodePort
nodePorts:
http: 30080
https: 30443
singleuser:
storage:
dynamic:
storageClass: local-storage
capacity: 10Gi
注意: 我将服务类型设置为 NodePort
,因为我没有任何云提供商(部署在我的实验室服务器集群上),我尝试使用 nginx-ingress
然后也失败了,这就是我不使用 LoadBalance
.
但是当我使用这个配置文件通过 Helm
安装 jupyterhub 时,我无法从浏览器访问 jupyterhub,甚至所有 Pods
运行。这些 pods 详情如下:
kubectl get pod --namespace jhub
NAME READY STATUS RESTARTS AGE
continuous-image-puller-8gxxk 1/1 Running 0 27m
continuous-image-puller-8tmdh 1/1 Running 0 27m
continuous-image-puller-lwdcx 1/1 Running 0 27m
continuous-image-puller-pszsr 1/1 Running 0 27m
hub-7b9cbbcf59-fbppq 1/1 Running 0 27m
proxy-6b699b54c8-2pxmb 1/1 Running 0 27m
user-scheduler-65f4cbb9b7-9vmfr 1/1 Running 0 27m
user-scheduler-65f4cbb9b7-lqfrh 1/1 Running 0 27m
及其服务如下:
kubectl get service --namespace jhub
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hub ClusterIP 10.10.55.78 <none> 8081/TCP 28m
proxy-api ClusterIP 10.10.27.133 <none> 8001/TCP 28m
proxy-public NodePort 10.10.97.11 <none> 443:30443/TCP,80:30080/TCP 28m
好像效果不错吧? (我猜的。)但事实是我无法使用ip 10.10.97.11
访问jupyter主页面,我也没有获得任何外部ip。
所以,我的问题是:
- 我的配置有问题吗?
- 如何获取外网ip?
最后,谢谢你让我度过了如此美好的一天!
对于 NodePort
服务,您将无法获得 EXTERNAL-IP
。您不能使用 CLUSTER-IP
从 kubernetes 集群外部访问它,因为 CLUSTER-IP
用于从 kubernetes 集群内部访问它,通常是从另一个 pod.For 从您需要的 kubernetes 集群外部访问使用 NodeIP:NodePort
其中 NodeIP
是您的 kubernetes 节点 IP 地址。