将服务暴露给外部客户端
有以下三种方式可以在外部访问服务:
将服务的类型设置成 NodePort
将服务的类型设置为 LoadBalance
创建一个 Ingress 资源
使用 NodePort 类型的服务
通过创建一个 NodePort 服务,可以让 Kubernetes 在其所有节点上保留一个端口(所有节点上都使用相同端口号),并将传入的连接转发给作为服务部分的 pod 。
创建 NodePort 类型的服务
可以使用如下描述文件 kubia-svc-nodeport.yaml 创建一个 NodePort 类型的服务。
# 遵循 v1 版本的 Kubernetes API
apiVersion: v1
# 资源类型为 Service
kind: Service
metadata://加入Java开发交流君样:756584822一起吹水聊天
# Service 的名称
name: kubia-nodeport
spec:
# 指定服务类型为 NodePort
type: NodePort
# 该服务可用的端口
ports:
# 第一个可用端口的名字
- name: http
# 可用端口为 80
port: 80
# 服务将连接转发到容器的 8080 端口
targetPort: 8080
# 通过集群节点的 30000 端口可以访问该服务
nodePort: 30000
# 第二个可用端口的名字
- name: https
# 可用端口为 443
port: 443
# 服务将连接转发到容器的 8443 端口
targetPort: 8443
# 通过集群节点的 32767 端口可以访问该服务
nodePort: 32767
# 具有 app=kubia 标签的 pod 都属于该服务
selector:
app: kubia
nodePort 属性不是强制的,如果忽略就会随机选择一个端口。
kubectl get services kubia-nodeport: 查看该服务的基础信息
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubia-nodeport NodePort 10.111.59.156 <none> 80:30000/TCP,443:32767/TCP 2s
//加入Java开发交流君样:756584822一起吹水聊天
PORT(S) 列显示集群 IP 内部端口 (80, 443) 和节点端口 (30000, 32767) ,可通过 10.111.59.156:80 和 :30000 等访问服务