k8s 暴露服务端口为nodeport
时间: 2023-12-08 22:04:53 浏览: 196
好的,您想了解关于 Kubernetes(k8s)如何将服务暴露到 NodePort 上的问题。在 Kubernetes 中,您可以使用 Service 对象将应用程序的一个或多个副本公开为单个稳定的虚拟 IP。在将服务暴露到 NodePort 上时,Kubernetes 将会在集群中的每个节点上分配一个端口,并将它们映射到您的服务的端口上。这样,您就可以通过集群节点的 IP 地址和分配的端口,访问您的服务。要将服务暴露到 NodePort 上,请在 Service 对象中指定“type: NodePort”,并为您的服务指定一个端口号。例如,以下 YAML 代码段将创建一个名为“my-service”的服务,并将其暴露到 NodePort 30000 上:
```
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
type: NodePort
ports:
- name: http
port: 80
targetPort: 8080
nodePort: 30000
selector:
app: my-app
```
在上面的代码中,“port”是您的服务将监听的端口,“targetPort”是您的服务的容器端口,“nodePort”是要分配给服务的 NodePort 端口。您可以根据需要更改这些值。希望这可以回答您的问题。
相关问题
k8s 1.28 dashboard 怎么改为nodeport
Kubernetes (k8s) 1.28版本的Dashboard更改成NodePort模式,是为了让外部网络能够直接访问控制台界面,而不需要配置Ingress资源。以下是步骤:
1. **安装NodePort服务**: 首先,确保已经安装了Kubernetes集群,并且运行了dashboard deployment。你需要创建一个新的Service资源,指定`type`为`NodePort`。
```yaml
apiVersion: v1
kind: Service
metadata:
name: kubernetes-dashboard
spec:
type: NodePort
selector:
app: kubernetes-dashboard
ports:
- name: http
port: 80
targetPort: 8080
nodePort: <暴露的端口号,默认是30001>
```
将`<暴露的端口号>`替换为你希望在节点上公开的端口(如30001),然后应用这个配置。
2. **确认NodePort设置**:可以在每个节点上通过命令行检查NodePort是否已分配给对应的Service:
```shell
kubectl get svc kubernetes-dashboard -o=jsonpath='{.status.loadBalancer.ingress[0].nodePort}'
```
3. **外部访问**:现在,你可以通过`http://<your-node-ip>:<nodePort>`来访问Kubernetes Dashboard。记得用节点的实际IP地址替换`<your-node-ip>`。
k8s serive 配置 NodePort
在 Kubernetes 中,要将 Service 暴露到集群外部,可以使用 NodePort 类型的 Service。NodePort 是一种类型的 Service,它会在每个节点上监听一个端口,并将该端口转发到 Service 的 ClusterIP 上。
下面是一个使用 NodePort 类型的 Service 的示例 YAML 文件:
```yaml
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: my-app
type: NodePort
ports:
- protocol: TCP
port: 80
targetPort: 8080
```
在这个示例中,我们创建了一个名为 my-service 的 Service,并将其类型设置为 NodePort。它将会暴露一个端口,该端口将会在每个节点上监听。当请求到达该端口时,它将会被转发到 Service 的 ClusterIP 上。
注意,我们还需要在 ports 字段中指定端口映射关系。在这个例子中,我们将 Service 的 80 端口映射到 Pod 的 8080 端口。
完成配置之后,使用 kubectl apply 命令将配置文件应用到 Kubernetes 集群中即可。
```bash
kubectl apply -f my-service.yaml
```
如果想查看 Service 的 NodePort 端口号,可以使用以下命令:
```bash
kubectl get svc my-service -o jsonpath='{.spec.ports[0].nodePort}'
```
这条命令将会输出 Service 的 NodePort 端口号。
阅读全文