k8s部署的服务怎么对外固定端口
时间: 2023-07-24 11:35:30 浏览: 50
在Kubernetes中,可以使用Service对象来暴露部署的服务并使其可以在集群内部或外部访问。要在Service中指定一个固定的端口,可以使用NodePort类型的Service。NodePort类型的Service会在每个节点上公开一个固定端口,并将其路由到Service的后端Pod。要指定一个特定的端口,请在Service的定义中指定“nodePort”字段。例如,在以下Service定义中,我们将端口号设置为“30001”:
```
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
type: NodePort
ports:
- port: 80
targetPort: 8080
nodePort: 30001
selector:
app: my-app
```
在这个示例中,我们将Service的端口设置为80,将目标端口设置为8080,并将节点端口设置为30001。这意味着我们可以在任何一个节点的IP地址上访问Service,端口号为30001。
相关问题
k8s 部署服务架构图
k8s (Kubernetes) 是一种用于管理容器化应用程序的开源平台。它提供了一种强大的方式来部署、扩展和管理容器化应用程序,具有高可用性、弹性和易于管理的特点。
k8s 部署服务的架构图通常包括以下组件:
1. Master节点:k8s集群的控制节点,负责整个集群的管理和协调。主要包括以下组件:
- API Server:负责接收和处理与集群的通信请求。
- Controller Manager:处理集群的控制逻辑,如副本控制器、服务控制器等。
- Scheduler:根据资源需求和约束,将容器部署到合适的节点上。
2. Node节点:运行容器化应用程序的节点,负责执行实际的工作负载。主要包含以下组件:
- Kubelet:与Master通信,接收集群管理的指令并执行。
- Container Runtime:负责容器的创建、启动和销毁,如Docker、containerd等。
- Kube-proxy:负责为Pod提供网络代理和负载均衡功能。
3. Pod:是k8s最小的部署单位,通常包含一个或多个紧密关联的容器。Pod是水平可扩展的,可以根据需要自动调整其副本数量。
4. Service:为一组Pod提供稳定的网络访问和负载均衡。Service通过标签选择器将请求转发给相应的Pod,并为它们提供集群内部或集群外部的访问。
5. Ingress:负责将外部请求路由到集群内的Service,并提供高级的URL和域名路由、负载均衡、SSL终止等功能。
6. Volume:提供持久化和共享的存储。Volume可以挂载到Pod中的一个或多个容器中,以实现数据的持久性和共享。
以上是一个基本的k8s部署服务架构图,其主要目标是提供高可用性、弹性和易于管理的容器化应用程序部署环境。通过灵活的水平扩展能力、自动化管理和调度机制,k8s能够有效地管理和处理大规模的应用程序工作负载。
k8s Service 怎么设置固定端口映射访问
在 Kubernetes 中,可以通过 NodePort 类型的 Service 来设置固定端口映射访问。NodePort 会在每个节点上监听一个固定端口,并将请求转发到后端 Pod 的对应端口,从而实现访问。
下面是一个示例的 NodePort Service 的 YAML 配置文件:
```yaml
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: my-app
type: NodePort
ports:
- name: http
port: 80
targetPort: 8080
nodePort: 30000 # 指定固定的节点端口
```
在上面的配置中,`type` 指定为 `NodePort`,并在 `ports` 中指定要暴露的端口,其中 `nodePort` 指定了要使用的固定节点端口。在这个例子中,我们将节点端口设置为 `30000`,因此可以通过访问任何一个节点的 `30000` 端口来访问后端 Pod 的 `8080` 端口。
注意,NodePort Service 的节点端口范围默认为 `30000-32767`,如果需要使用其他端口,也可以手动指定。