栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

K8s系列之:集群外部访问Pod或Service

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

K8s系列之:集群外部访问Pod或Service

K8s系列之:集群外部访问Pod或Service

一、将容器应用的端口号映射到物理机二、将Service的端口号映射到物理机上

Pod和Service是K8s集群范围内的虚拟概念,所以集群外的客户端系统无法通过Pod的IP地址或者Service的虚拟IP地址和虚拟端口号访问。为了让外部客户端可以访问这些服务,可以将Pod或Service的端口号映射到宿主机,以使得客户端应用能够通过物理机访问容器应用。

一、将容器应用的端口号映射到物理机

1.通过设置容器级别的hostPort,将容器应用的端口号映射到物理机上

pod-hostport.yaml

apiVersion: v1
kind: Pod
metadata:
  name: webapp
  labels:
    app: webapp
spec:
  containers:
  - name: webapp
    image: tomcat
    ports:
    - containerPort: 8080
      hostPort: 8081

通过kubectl create命令创建这个Pod

kubectl create -f pod-hostport.yaml
pod "webapp" created

通过物理机的IP地址和8081端口号方位Pod内的容器服务:

curl 192.168.18.3:8081

2.通过设置Pod级别的hostNetwork=true,该Pod中所有容器的端口号都将被直接映射到物理机上。

设置hostNetwork=true时需要注意,在容器的ports定义部分如果不指定hostPort,则默认hostPort等于containerPort,如果指定了hostPort,则hostPort必须等于containerPort的值。

pod-hostnetwork.yaml

apiVersion: v1
kind: Pod
metadata:
  name: webapp
  labels: 
    app: webapp
spec:
  hostNetwork: true
  containers:
  - name: webapp
    image: tomcat
    imagePullPolicy: Never
    ports:
    - containerPort: 8080

创建这个Pod

kubectl create -f pod-hostnetwork.yaml
pod "webapp" created

通过物理机的IP地址和8080端口号访问Pod内的容器服务

curl 192.168.18.4:8080
二、将Service的端口号映射到物理机上

1.通过设置nodePort映射到物理机,同时设置Service的类型为NodePort
webapp-svc-nodeport.yaml

apiVersion: v1
kind: Service
metadata:
  name: webapp
spec:
  type: NodePort
  ports:
  - port: 8080
    targetPort: 8080
    nodePort: 8081
  selector:
    app: webapp

创建这个Service

kubectl create -f webapp-svc-nodeport.yaml

通过物理机的IP地址和nodePort 8081端口号访问服务:

curl 192.168.18.3:8081

对该Service的访问将被负载分发到后端的多个Pod上。

2.通过设置LoadBalancer映射到云服务商提供的LoadBalancer地址
这种用法仅用于在公有云服务提供商的云平台上设置Service的场景。

下面的例子中,status.loadBalancer.ingress.ip设置的146.148.47.155为云服务商提供的负载均衡器的IP地址。对该Service的访问请求将会通过LoadBalancer转发到后端Pod上,负载分发的实现方式则依赖于云服务商提供的LoadBalancer的实现机制。

kind: Service
apiVersion: v1
metadata:
  name: my-service
spec:
  selector:
    app: MyApp
  ports:
  - protocol: TCP
    port: 80
    targetPort: 9376
    nodePort: 30061
  clusterIP: 10.0.171.239
  loadBalancerIP: 78.11.24.19
  type: LoadBalancer
status:
  loadBalancer:
    ingress:
    - ip: 146.148.47.155
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/731002.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号