轻松掌握K8s端口映射:实操教程,让服务轻松对外访问

在Kubernetes(简称K8s)中,端口映射是一个非常重要的概念,它允许您将集群内部的服务暴露给集群外部,使得外部的客户端可以访问到这些服务。本文将为您提供一个详细的实操教程,帮助您轻松掌握K8s端口映射的技巧。
一、K8s端口映射概述
在K8s中,端口映射通常通过以下几种方式实现:
Service类型:NodePort
Service类型:LoadBalancer
Ingress控制器
下面我们将分别介绍这三种方式。
二、NodePort类型服务
NodePort类型的服务会将服务暴露在K8s集群中所有节点的指定端口上。客户端可以通过节点IP和端口访问到服务。
1. 创建NodePort类型服务
首先,您需要创建一个Service资源,指定类型为NodePort。
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: my-app
ports:
– protocol: TCP
port: 80
targetPort: 8080
nodePort: 30000
在这个例子中,我们将服务
my-app
的80端口映射到所有节点的30000端口。
2. 部署Pod
接下来,您需要部署一个Pod,使其被上述Service选中。
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
– name: my-container
image: my-image
ports:
– containerPort: 8080
3. 访问服务
现在,您可以通过任意节点的IP地址和端口30000访问到服务。
三、LoadBalancer类型服务
LoadBalancer类型的服务会将服务暴露在云服务提供商提供的负载均衡器上。客户端可以通过负载均衡器的IP地址访问到服务。
1. 创建LoadBalancer类型服务
创建一个Service资源,指定类型为LoadBalancer。
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: my-app
ports:
– protocol: TCP
port: 80
targetPort: 8080
type: LoadBalancer
2. 部署Pod
部署一个Pod,使其被上述Service选中。
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
– name: my-container
image: my-image
ports:
– containerPort: 8080
3. 访问服务
现在,您可以通过云服务提供商提供的负载均衡器IP地址访问到服务。
四、Ingress控制器
Ingress控制器是一种用于管理K8s集群中服务入站的资源。它允许您通过域名访问服务。
1. 部署Ingress控制器
首先,您需要部署一个Ingress控制器。以下是一个使用Nginx Ingress的示例。
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml
2. 创建Ingress资源
创建一个Ingress资源,指定域名和要访问的服务。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
spec:
rules:
– host: my-service.example.com
http:
paths:
– path: /
pathType: Prefix
backend:
service:
name: my-service
port:
number: 80
3. 访问服务
现在,您可以通过域名
my-service.example.com
访问到服务。
五、总结
通过本文的实操教程,您应该已经掌握了K8s端口映射的技巧。在实际应用中,您可以根据需求选择合适的端口映射方式,让您的服务轻松对外访问。希望本文对您有所帮助!