K8s端口暴露实例

apiVersion: v1
kind: Pod
metadata:
 ``name: nginx2
 ``labels:
  ``app: web
spec:
 ``containers:
 ``- name: ng-web2
  ``image: nginx:latest
  ``imagePullPolicy: Never
  ``ports:
  ``- name: http
   ``containerPort: 80   --容器端口
   ``hostPort: 80   --暴露端口
   ``protocol: TCP
### Kubernetes 中暴露服务端口的方法 在 Kubernetes 集群中,可以通过多种方式来暴露服务端口以便外部能够访问集群内部的服务。以下是通过 `Service` 和 `Ingress` 实现这一目标的具体方法。 #### 使用 Service 暴露服务端口 Kubernetes 提供了几种类型的 `Service` 来实现对外部流量的开放: 1. **ClusterIP**: 默认类型,仅允许集群内的其他 Pod 访问该服务。 2. **NodePort**: 将服务映射到节点上的特定端口,从而可以从外部网络直接访问这些端口[^3]。 3. **LoadBalancer**: 在支持 LoadBalancer 的云环境中(如 AWS、GCP),可以动态分配一个负载均衡器并绑定至服务。 对于 NodePort 类型的服务配置文件如下所示: ```yaml apiVersion: v1 kind: Service metadata: name: my-service spec: type: NodePort selector: app: my-app ports: - protocol: TCP port: 80 targetPort: 9376 nodePort: 30007 # 可选字段,默认范围为 30000-32767 ``` 执行命令以应用此配置并将服务公开给外部世界: ```bash kubectl apply -f service-nodeport.yaml kubectl get svc -n ingress-nginx ``` #### 使用 Ingress 控制器暴露服务端口 另一种更灵活的方式是利用 `Ingress` 资源配合相应的控制器完成复杂的路由规则定义。这通常用于 HTTP/HTTPS 流量管理场景下。 ##### 安装 Ingress Controller 并设置 HostNetwork 模式 为了使 Ingress 功能生效,首先需部署合适的 Ingress Controller 到集群当中。例如 NGINX Ingress Controller 是一种广泛使用的解决方案之一[^2]。 创建专用命名空间存储所有与 Ingress 相关的对象实例之前先初始化环境准备阶段操作步骤包括但不限于以下几项内容: ```bash kubectl create ns ingress-nginx ``` 接着按照官方文档指引下载对应版本 manifest 文件或者自定义编写 YAML 描述符加载资源对象进入系统之中去实际运行起来看看效果如何吧! 最后验证整个流程是否成功的关键在于检查生成的相关记录信息是否存在正常状态指示灯亮起表示一切就绪待命随时响应请求啦! ```bash kubectl apply -f mandatory.yaml kubectl get pod -n ingress-nginx ``` 随后继续扩展功能选项比如调整暴露策略采用 NodePort 方式替代默认行为等等细节部分都需要仔细斟酌权衡利弊之后再做决定哦亲~ ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

医者运维

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值