Kubernetes 服务暴露给本地机器
Kubernetes services to be exposed to local machine
我 运行 我的 kubernetes 集群使用 kubeadm(本地使用 VMWare 虚拟机)。作为安装的一部分,我安装了 Weave 网络适配器以建立主从之间的关系。
我能够成功创建 pods 和服务。甚至,可以使用 kubeadm 提供的私有 IP 获取应用程序。
问题是,尽管网络与 VM 和我的本地计算机共享,但我无法使用我的系统访问同一个应用程序。这是预期的。主要原因是私有网络。
我想在私有 kubernates 网络之外的本地机器上访问应用程序。
要记住的要点:我使用 VMWare 虚拟机在本地计算机上托管所有内容。
谁能帮我解决这个问题?
我认为您正在寻找 this。当我在本地尝试一切时,我遇到了同样的问题。您需要使用 --type=NodePort
例如我创建了一个部署:
./cluster/kubectl.sh run my-jenkins --image=jenkins:1.651.1 --replicas=1 --port=8080 –-namespace=jenkins
我检查吊舱
kubectl --namespace=jenkins get pods
NAME READY STATUS RESTARTS AGE
my-jenkins-1908062973-7b44z 1/1 Running 0 24s
我的部署在 deploymentconfig 中为我创建了一个 pod + replicaSet。
现在我想在我的 pod
之上创建一个服务
./cluster/kubectl.sh expose rs my-jenkins-1908062973 --port=80 --target-port=8080 --type=NodePort --name=jenkins-service --namespace=jenkins
感谢 --type=NodePort
我也可以在本地访问我的服务
如果将type字段设置为"NodePort",Kubernetes master会从flag配置的范围内分配一个端口(默认:30000-32767),每个Node会代理这个端口(同一个端口每个节点上的编号)到您的服务中。该端口将在您服务的 spec.ports[*].nodePort 字段中报告。
我 运行 我的 kubernetes 集群使用 kubeadm(本地使用 VMWare 虚拟机)。作为安装的一部分,我安装了 Weave 网络适配器以建立主从之间的关系。
我能够成功创建 pods 和服务。甚至,可以使用 kubeadm 提供的私有 IP 获取应用程序。
问题是,尽管网络与 VM 和我的本地计算机共享,但我无法使用我的系统访问同一个应用程序。这是预期的。主要原因是私有网络。
我想在私有 kubernates 网络之外的本地机器上访问应用程序。
要记住的要点:我使用 VMWare 虚拟机在本地计算机上托管所有内容。
谁能帮我解决这个问题?
我认为您正在寻找 this。当我在本地尝试一切时,我遇到了同样的问题。您需要使用 --type=NodePort
例如我创建了一个部署:
./cluster/kubectl.sh run my-jenkins --image=jenkins:1.651.1 --replicas=1 --port=8080 –-namespace=jenkins
我检查吊舱
kubectl --namespace=jenkins get pods
NAME READY STATUS RESTARTS AGE
my-jenkins-1908062973-7b44z 1/1 Running 0 24s
我的部署在 deploymentconfig 中为我创建了一个 pod + replicaSet。 现在我想在我的 pod
之上创建一个服务./cluster/kubectl.sh expose rs my-jenkins-1908062973 --port=80 --target-port=8080 --type=NodePort --name=jenkins-service --namespace=jenkins
感谢 --type=NodePort
我也可以在本地访问我的服务
如果将type字段设置为"NodePort",Kubernetes master会从flag配置的范围内分配一个端口(默认:30000-32767),每个Node会代理这个端口(同一个端口每个节点上的编号)到您的服务中。该端口将在您服务的 spec.ports[*].nodePort 字段中报告。