1、nginx-deployment.yaml
kind: Deployment
apiVersion: apps/v1
metadata:
name: nginx
namespace: default
labels:
k8s-app: nginx
spec:
selector:
matchLabels:
k8s-app: nginx
replicas: 2
template:
metadata:
labels:
k8s-app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
protocol: TCP
2、 nginx-service.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx
namespace: default
labels:
k8s-app: nginx
spec:
selector:
k8s-app: nginx
ports:
- port: 80 # Service 暴露的端口
targetPort: 80 # Pod 的端口
protocol: TCP
type: ClusterIP # 默认类型,仅在集群内部访问
#type:NodePort # 通过节点 IP 和端口访问
#type: LoadBalancer # 通过云服务商的负载均衡器访问
3、kubectl apply -f nginx-deployment.yaml
4、kubectl apply -f nginx-service.yaml
5、 验证
查看 Deployment 和 Pod
kubectl get deployments kubectl get pods
查看 Service
kubectl get svc
6、访问 Nginx
-
如果使用
ClusterIP
,可以在集群内部通过 Service 的 IP 访问:curl http://<cluster-ip>:80
-
如果使用
NodePort
,可以通过节点的 IP 和端口访问:curl http://<node-ip>:<node-port>
-
如果使用
LoadBalancer
,可以通过云服务商提供的负载均衡器 IP 访问。
总结
-
通过 Deployment 创建了 3 个 Nginx Pod。
-
通过 Service 将 Nginx 的 80 端口暴露出去,支持
ClusterIP
、NodePort
和LoadBalancer
三种类型。 -
根据需求选择合适的 Service 类型,并验证访问。
~