Kubernetes(九)——NodePort类型Service暴露应用

参考文档

在集群中暴露 Pod

创建pod

vim my-nginx.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx
spec:
  selector:
    matchLabels:
      run: my-nginx
  replicas: 6
  template:
    metadata:
      labels:
        run: my-nginx
    spec:
      containers:
      - name: my-nginx
        image: nginx
        ports:
        - containerPort: 80
kubectl apply -f my-nginx.yaml
kubectl get pods -o wide

在这里插入图片描述

NodePort类型暴露Service

vim service.yaml
apiVersion: v1
kind: Service
metadata:
  name: my-nginx
  labels:
    run: my-nginx
spec:
  type: NodePort
  ports:
  - port: 8080
    targetPort: 80
    protocol: TCP
    name: http
  selector:
    run: my-nginx
kubectl apply -f servcie.yaml
kubectl get service my-nginx

在这里插入图片描述

可以看到8080:31944
8080其实是k8s集群内部的一个VIP,做负载均衡
31944其实是宿主机master的端口

我们查看一下服务的详细信息

 kubectl describe service my-nginx

在这里插入图片描述
所以说8080端口是VIP10.1.132.180的端口

我们进入容器内部把显示的页面更改,查看负载均衡的效果。

在这里插入图片描述
我们多次访问VIP的8080端口可以看到负载均衡效果
在这里插入图片描述
使用集群外的同网段机器访问宿主机的31944端口,可以看到负载均衡效果。
在这里插入图片描述

当然我们也可以使用命令暴露服务

kubectl delete service my-nginx
#先删除服务
kubectl expose deployment/my-nginx --type="NodePort" --port=8080  --target-port=80 --name=my-nginx

在这里插入图片描述

可以看到又随机生成一个VIP,宿主机的代理端口为32747
所以NodePort类型在集群中的主机节点上为Service随机提供一个代理端口,以允许从主机网络上对Service进行访问。

猜你喜欢

转载自blog.csdn.net/weixin_46415378/article/details/124526283