Administrator
Administrator
发布于 2025-07-15 / 15 阅读
0
0

Kubernetes使用service的externalIPs暴露服务

如果有路由到一个或多个集群节点的外部 IP,则可以在这些 IP 上公开 Kubernetes 服务。在服务端口上使用外部 IP(作为目标 IP)进入集群的流量将被路由到其中一个服务端点。 不受 Kubernetes 管理,由集群管理员负责

在Kubernetes中用到的比较到多的是ClusterIP和NodePort类型的service,externalIPs则很少使用。我们现在了解一下其用法和它的一些优缺点

第一章:创建一个基于nginx镜像的deployment的服务

[root@k8s-master1-60 ruoyi-gen]# kubectl create deployment -n default nginx --image=nginx:1.21.0 --port=80 --dry-run=client -oyaml > nginx.yaml

[root@k8s-master1-60 deployment]# cat nginx.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: nginx
  name: nginx
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: nginx
    spec:
      containers:
      - image: nginx:1.21.0
        name: nginx
        ports:
        - containerPort: 80
        resources: {}
status: {}

[root@k8s-master1-60 deployment]# kubectl apply -f nginx.yaml 
deployment.apps/nginx created

[root@k8s-master1-60 deployment]# kubectl get pod
NAME                          READY   STATUS    RESTARTS   AGE
nginx-85b96f4859-7qx5r        1/1     Running   0          84s

第二章:创建service服务(externalIPs模式)

[root@k8s-master1-60 deployment]# cat << EOF > nginx-service.yaml
apiVersion: v1
kind: Service
metadata:
  name: nginx
  namespace: default
spec:
  selector:
    app: nginx
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
  externalIPs:
    - 172.30.42.72
  type: ClusterIP
EOF

[root@k8s-master1-60 deployment]# kubectl apply -f nginx-service.yaml 
service/nginx created

[root@k8s-master1-60 deployment]# kubectl get svc nginx 
NAME    TYPE        CLUSTER-IP      EXTERNAL-IP    PORT(S)   AGE
nginx   ClusterIP   10.111.191.16   172.30.42.72   80/TCP    27s

#使用CMD控制台或者浏览器调用查看nginx服务


评论