最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

K8s Service服務(wù)發(fā)布方式

 更新時間:2025年08月14日 09:42:36   作者:大新屋  
文章介紹了Kubernetes中標(biāo)簽(Label)用于資源分組,標(biāo)簽選擇器(Selector)用于精準(zhǔn)匹配;Service作為服務(wù)抽象,通過標(biāo)簽選擇器關(guān)聯(lián)Pod,提供穩(wěn)定訪問入口(ClusterIP/NodePort);Endpoint記錄Pod網(wǎng)絡(luò)信息,實現(xiàn)服務(wù)發(fā)現(xiàn)與流量分發(fā)

一、Label和Selector

  • Label:Label(標(biāo)簽)可以對K8s的一些對象,如Pod和節(jié)點(diǎn)進(jìn)行“分組”。通過添加key=value格式的標(biāo)簽,用于區(qū)分同樣的資源不同的分組。
  • Selector:Selector(標(biāo)簽選擇器)可以通過根據(jù)資源的標(biāo)簽查詢出精確的對象信息。

1、創(chuàng)建Pod標(biāo)簽

(1)、Deployment自定義Pod標(biāo)簽參數(shù)說明

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx-deploy
  name: nginx-deploy
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx        # Deployment標(biāo)簽選擇器進(jìn)行選擇自定義的Pod標(biāo)簽,不同的Deployment不能有相同的標(biāo)簽,與.spec.template.metadata.labelsc參數(shù)值匹配
  template:
    metadata:
      labels:	
        app: nginx      # 自定義Pod標(biāo)簽,與.spec.selector.matchLabels參數(shù)值匹配
    spec:
      containers:
      - image: registry.cn-shenzhen.aliyuncs.com/dockerghost/nginx:1.26
        name: nginx

(2)、創(chuàng)建兩個不同標(biāo)簽的Pod

mkdir -p /data/yaml/label
cat > /data/yaml/label/nginx-deploy.yaml << 'EOF'
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx-deploy
  name: nginx-deploy
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
      disktype: hdd
  template:
    metadata:
      labels:
        app: nginx
        disktype: hdd
    spec:
      containers:
      - image: registry.cn-shenzhen.aliyuncs.com/dockerghost/nginx:1.24
        name: nginx01
        ports:
        - containerPort: 80
EOF

cat > /data/yaml/label/redis-deploy.yaml << 'EOF'
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: redis-deploy
  name: redis-deploy
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: redis
      disktype: ssd
  template:
    metadata:
      labels:
        app: redis
        disktype: ssd
    spec:
      containers:
      - image: registry.cn-shenzhen.aliyuncs.com/dockerghost/redis:6.2.16
        name: redis01
        ports:
        - containerPort: 6379
EOF

kubectl create -f /data/yaml/label/
kubectl get pods -n defaul
kubectl get pods -n default

(3)、Pod查詢標(biāo)簽操作

### 查詢default命名空間下Pod標(biāo)簽鍵值對
kubectl get pods -n default --show-labels

### 查詢defalut命名空間下Pod標(biāo)簽鍵值對匹配app=nginx
kubectl get pods -n default --show-labels -l app=nginx

### 查詢default命名空間下Pod標(biāo)簽鍵值對匹配app=redis的Pod(正則過濾)
kubectl get pods -l 'app in (redis)' -n default --show-labels

### 查詢default命名空間下Pod標(biāo)簽鍵值對匹配app=redis并且disktype!=hhd(正則過濾)
kubectl get pods -l 'app in (redis)' -n default --show-labels

### 查詢default命名空間下Pod標(biāo)簽鍵(key)名匹配disktype
kubectl get pods -n default --show-labels -l disktype

2、創(chuàng)建Service標(biāo)簽

(1)、創(chuàng)建一個Deployment Service

mkdir -p /data/yaml/label
cat > /data/yaml/label/nginx-deploy-service.yaml << 'EOF'
apiVersion: v1
kind: Service
metadata:
  labels:
    app: nginx-service
  name: nginx-service
  namespace: default
spec:
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx-deploy
  name: nginx-deploy
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
      disktype: hdd
  template:
    metadata:
      labels:
        app: nginx
        disktype: hdd
    spec:
      containers:
      - image: registry.cn-shenzhen.aliyuncs.com/dockerghost/nginx:1.24
        name: nginx01
        ports:
        - containerPort: 80
EOF

kubectl create -f /data/yaml/label/nginx-deploy-service.yaml
kubectl get deploy -n default
kubectl get deploy -n default
kubectl get service -n default -owide

(2)、Service查詢標(biāo)簽操作

### 查詢Service已創(chuàng)建的標(biāo)簽鍵值對
kubectl get services -n default --show-labels
kubectl get svc -n default --show-labels

### 查詢Service標(biāo)簽鍵值對匹配app=nginx-service
kubectl get Services -n default --show-labels -l app=nginx-service

3、創(chuàng)建節(jié)點(diǎn)標(biāo)簽

(1)、K8s節(jié)點(diǎn)創(chuàng)建標(biāo)簽

### 選擇k8s集群k8s-node01、k8s-node02、k8s-node03創(chuàng)建自定義標(biāo)簽,app=erp-test自定義的labels標(biāo)簽鍵值對
kubectl get nodes
kubectl label nodes k8s-node01 k8s-node02 k8s-node03 app=erp-test
kubectl get nodes -l app=erp-test -owide

(2)、節(jié)點(diǎn)查詢標(biāo)簽操作

### 查看節(jié)點(diǎn)已定義的所有標(biāo)簽
kubectl get node --show-labels

### 查看節(jié)點(diǎn)已定義的標(biāo)簽鍵值對(key=values)為app=erp-test
kubectl get node --show-labels -l app=erp-test
kubectl get nodes -l app=erp-test -owide

### 選擇標(biāo)簽匹配app=erp-test的node節(jié)點(diǎn)(正則過濾)
kubectl get node -l 'app in (erp-test)' --show-labels

### 選擇標(biāo)簽匹配app=erp-test并且disktype!=ssd的node節(jié)點(diǎn)(正則過濾)
kubectl get node -l 'disktype!=ssd,app in (erp-test)' --show-labels

### 選擇lable的鍵(key)名為app的節(jié)點(diǎn)
kubectl get node --show-labels -l app

4、修改節(jié)點(diǎn)指定標(biāo)簽

### 修改指定節(jié)點(diǎn)名稱的標(biāo)簽
kubectl label node k8s-node01 k8s-node02 subnet=30 --overwrite
kubectl get node --show-labels -l subnet=30

### 修改指定節(jié)點(diǎn)標(biāo)簽key
kubectl label node -l subnet subnet=40 --overwrite
kubectl get node --show-labels -l subnet=40

5、刪除節(jié)點(diǎn)指定標(biāo)簽

### 刪除指定節(jié)點(diǎn)的標(biāo)簽
kubectl label node k8s-node01 subnet-
kubectl get node --show-labels -l subnet=40

### 刪除指定節(jié)點(diǎn)標(biāo)簽key
kubectl label node -l subnet subnet-
kubectl get node --show-labels -l subnet=40

6、節(jié)點(diǎn)創(chuàng)建標(biāo)簽并應(yīng)用到Deployment和Service

(1)、K8s節(jié)點(diǎn)創(chuàng)建標(biāo)簽

### k8s-node01、k8s-node02、k8s-node03節(jié)點(diǎn)創(chuàng)建自定義標(biāo)簽system=erp
kubectl get node
kubectl label node k8s-node01 k8s-node02 k8s-node03 system=erp

(2)、創(chuàng)建Deployment和Service并匹配節(jié)點(diǎn)標(biāo)簽

### Deployment參數(shù).spec.template.spec.nodeSelector參數(shù)添加節(jié)點(diǎn)自定義標(biāo)簽system=erp
cat > /data/yaml/label/nginx-deploy-service.yaml << 'EOF'
apiVersion: v1
kind: Service
metadata:
  labels:
    app: nginx-service
  name: nginx-service
  namespace: default
spec:
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx-deploy
  name: nginx-deploy
  namespace: default
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
      disktype: hdd
  template:
    metadata:
      labels:
        app: nginx
        disktype: hdd
    spec:
      nodeSelector:
        system: erp
      containers:
      - image: registry.cn-shenzhen.aliyuncs.com/dockerghost/nginx:1.24
        name: nginx01
        ports:
        - containerPort: 80
EOF

kubectl create -f  /data/yaml/label/nginx-deploy-service.yaml
kubectl get pods -n default
kubectl get deploy -n default
kubectl get svc -n default

(3)、檢查標(biāo)簽

### 檢查節(jié)點(diǎn)標(biāo)簽
kubectl get node --show-labels
kubectl get node --show-labels -l system=erp

### 檢查Pod標(biāo)簽
kubectl get pods -n default --show-labels
kubectl get pods -n default --show-labels -l app=nginx

### 檢查Service標(biāo)簽
kubectl get svc -n default --show-labels
kubectl get svc -n default --show-labels -l app=nginx-service

二、Service

提示:Kubernetes 官網(wǎng)Service說明文檔: https://kubernetes.io/docs/concepts/services-networking/service/

每個Pod都會獲取到它自己的IP地址,但是這些IP地址不總是穩(wěn)定和可依賴的,這樣就會導(dǎo)致一個問題:在Kubernetes集群中,如果一組Pod(比如后端的Pod)為其他Pod(比如前端的Pod)提供服務(wù),那么如果它們之間使用Pod的IP地址進(jìn)行通信,在Pod重建后,將無法再進(jìn)行連接。

于是Kubernetes引用了Service這樣一種抽象概念:邏輯上的一組Pod,即一種可以訪問Pod的策略。這一組Pod能夠被Service通過標(biāo)簽選擇器訪問到,之后就可以使用Service進(jìn)行通信。

1、Service參數(shù)說明

apiVersion: v1              # 填寫API資源版本號,通過kubectl api-resources | grep Service命令查詢API資源版本號
kind: Service               # 指定資源類型,Service資源類型是Service
metadata:                 # 包含Service的元數(shù)據(jù)
  labels:                  # 設(shè)置Service標(biāo)簽
    app: nginx-service      # 自定義Service標(biāo)簽鍵值對
  name: nginx-service      # 自定義Service名稱
spec:                     # 設(shè)置Service的規(guī)格
  selector:                # 設(shè)置Service調(diào)用Pod,必須與Deployment參數(shù).spec.template.metadata.labels參數(shù)值匹配
    app:nginx
  ports:                   # 設(shè)置端口組
    - protocol: TCP         # 設(shè)置使用的協(xié)議,Service支持TCP、UDP、SCTP等協(xié)議,默認(rèn)TCP協(xié)議
      port: 80             # 自定義Service端口號,K8s集群內(nèi)部訪問使用的端口
      targetPort: 80      # 指定Pod端口,如果targetPort為空,targetPort將被設(shè)置與Deployment參數(shù).template.spec.containers.ports.containerPort:字段相同的值
  type: ClusterIP           # 設(shè)置Service類型,ClusterIP只允許K8s集群內(nèi)部訪問,NodePort允許K8s集群內(nèi)部和外部訪問,默認(rèn)ClusterIP類型

### Service Type(服務(wù)類型)主要包括以下幾種:
ClusterIP            # K8s集群對內(nèi)發(fā)布服務(wù),只能K8s集群內(nèi)部訪問,默認(rèn)值
NodePort        # K8s集群對外發(fā)布服務(wù),允許K8s集群外部和內(nèi)部訪問,通過kube-apiserver服務(wù)參數(shù)--service-node-port-range=30000-32767設(shè)置的端口范圍內(nèi)隨機(jī)一個NodePort端口(也可以手動指定,但端口范圍由kube-apiserver服務(wù)參數(shù)決定),通過kube-proxy服務(wù)把NodePort端口可以代理至后端Pod,可以通過NodePort從K8s集群外部訪問到K8s集群內(nèi)部的服務(wù),格式為NodeIP:NodePort
LoadBalance         # 使用云廠商提供的負(fù)載均衡器公開服務(wù),成本較高
ExternalName        # 通過返回定義的CNAME別名,沒有設(shè)置任何類型的代理,需要K8s 1.7以上版本kube-dns支持

2、創(chuàng)建Service(ClusterIP,K8s集群對內(nèi)發(fā)布服務(wù))

提示:刪除Deployment后,再重新創(chuàng)建Deployment,Servicer IP是不會發(fā)生變化,除非刪除Service重新創(chuàng)建Service,這時Service IP就會發(fā)生變化

mkdir -p /data/yaml/label
cat > /data/yaml/label/nginx-deploy-service.yaml << 'EOF'
apiVersion: v1
kind: Service
metadata:
  labels:
    app: nginx-service
  name: nginx-service
  namespace: default
spec:
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  type: ClusterIP
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx-deploy
  name: nginx-deploy
  namespace: default
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - image: registry.cn-shenzhen.aliyuncs.com/dockerghost/nginx:1.24
        name: nginx01
        ports:
        - containerPort: 80
EOF

kubectl create -f /data/yaml/label/nginx-deploy-service.yaml
kubectl get pods -n default
kubectl get deploy -n default
kubectl get service -n default

### 查看指定Service yaml文件參數(shù)配置
kubectl get svc nginx-service -n default -oyaml

### K8s集群內(nèi)部訪問Service格式,相同NameSpace命名空間下Pod訪問格式:Service名稱 + 端口,不相同NameSpace命名空間下Pod訪問格式:Service名稱 + 端口 + NameSpace名稱
curl 10.96.107.232
kubectl exec nginx-deploy-55c5d4b47f-424tx -- curl http://nginx-service
kubectl exec nginx-deploy-55c5d4b47f-424tx -- curl http://10.96.107.232
kubectl exec nginx-deploy-55c5d4b47f-424tx -- curl nginx-service.default

3、創(chuàng)建Service(NodePort隨機(jī)產(chǎn)生端口,K8s集群對外發(fā)布服務(wù))

提示:刪除Deployment后,再重新創(chuàng)建Deployment,Servicer IP是不會發(fā)生變化,除非刪除Service重新創(chuàng)建Service,這時Service IP就會發(fā)生變化

提示:Service type參數(shù)值NodePort 是設(shè)置K8s集群對外發(fā)布服務(wù),允許K8s集群外部和內(nèi)部訪問,通過kube-apiserver服務(wù)參數(shù)--service-node-port-range=30000-32767設(shè)置的端口范圍內(nèi)隨機(jī)一個NodePort端口(也可以手動指定,但端口范圍由kube-apiserver服務(wù)參數(shù)決定),通過kube-proxy服務(wù)把NodePort端口可以代理至后端Pod,可以通過NodePort從K8s集群外部訪問到K8s集群內(nèi)部的服務(wù),格式為NodeIP:NodePort`

mkdir -p /data/yaml/label
cat > /data/yaml/label/nginx-deploy-service.yaml << 'EOF'
apiVersion: v1
kind: Service
metadata:
  labels:
    app: nginx-service
  name: nginx-service
  namespace: default
spec:
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  type: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx-deploy
  name: nginx-deploy
  namespace: default
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - image: registry.cn-shenzhen.aliyuncs.com/dockerghost/nginx:1.24
        name: nginx01
        ports:
        - containerPort: 80
EOF

kubectl create -f /data/yaml/label/nginx-deploy-service.yaml
kubectl get pods -n default
kubectl get deploy -n default
kubectl get service -n default

### 查看指定Service yaml文件參數(shù)配置
kubectl get svc nginx-service -n default -oyaml

### K8s集群外部主機(jī)訪問Service格式: 任意一臺K8s集群節(jié)點(diǎn)IP + 隨機(jī)的NodePort端口
curl http://172.20.235.201:30926

### K8s集群內(nèi)部訪問Service格式(K8s集群內(nèi)部包括節(jié)點(diǎn)和Pod):相同NameSpace命名空間下Pod訪問格式:Service名稱 + 端口,不相同NameSpace命名空間下Pod訪問格式:Service名稱 + 端口 + NameSpace名稱
curl 10.96.107.232
kubectl exec nginx-deploy-55c5d4b47f-424tx -- curl http://nginx-service
kubectl exec nginx-deploy-55c5d4b47f-424tx -- curl http://10.96.107.232
kubectl exec nginx-deploy-55c5d4b47f-424tx -- curl nginx-service.default

### (kubernetes二進(jìn)制安裝)NodePort對外發(fā)布服務(wù)產(chǎn)生的30926是從/usr/lib/systemd/system/kube-apiserver.service配置文件--service-cluster-ip-range參數(shù)端口范圍內(nèi)隨機(jī)產(chǎn)生
[root@k8s-master01 ~]#  cat /usr/lib/systemd/system/kube-apiserver.service | egrep "service-node-port-range"
      --service-node-port-range=30000-32767  \

4、創(chuàng)建Service(NodePort手動指定端口,K8s集群對外發(fā)布服務(wù))

提示:刪除Deployment后,再重新創(chuàng)建Deployment,Servicer IP是不會發(fā)生變化,除非刪除Service重新創(chuàng)建Service,這時Service IP就會發(fā)生變化

提示:Service type參數(shù)值NodePort 是設(shè)置K8s集群對外發(fā)布服務(wù),允許K8s集群外部和內(nèi)部訪問,通過kube-apiserver服務(wù)參數(shù)--service-node-port-range=30000-32767設(shè)置的端口范圍內(nèi)隨機(jī)一個NodePort端口(也可以手動指定,但端口范圍由kube-apiserver服務(wù)參數(shù)決定),通過kube-proxy服務(wù)把NodePort端口可以代理至后端Pod,可以通過NodePort從K8s集群外部訪問到K8s集群內(nèi)部的服務(wù),格式為NodeIP:NodePort

mkdir -p /data/yaml/label
cat > /data/yaml/label/nginx-deploy-service.yaml << 'EOF'
apiVersion: v1
kind: Service
metadata:
  labels:
    app: nginx-service
  name: nginx-service
  namespace: default
spec:
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
      nodePort: 31000
  type: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx-deploy
  name: nginx-deploy
  namespace: default
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - image: registry.cn-shenzhen.aliyuncs.com/dockerghost/nginx:1.24
        name: nginx01
        ports:
        - containerPort: 80
EOF

kubectl create -f /data/yaml/label/nginx-deploy-service.yaml
kubectl get pods -n default
kubectl get deploy -n default
kubectl get service -n default

### 查看指定Service yaml文件參數(shù)配置
kubectl get svc nginx-service -n default -oyaml

### K8s集群外部主機(jī)訪問Service格式: 任意一臺K8s集群節(jié)點(diǎn)IP + 手動指定的NodePort端口
curl http://172.20.235.201:31000

### K8s集群內(nèi)部訪問Service格式(K8s集群內(nèi)部包括節(jié)點(diǎn)和Pod):相同NameSpace命名空間下Pod訪問格式:Service名稱 + 端口,不相同NameSpace命名空間下Pod訪問格式:Service名稱 + 端口 + NameSpace名稱
curl 10.96.107.232
kubectl exec nginx-deploy-55c5d4b47f-424tx -- curl http://nginx-service
kubectl exec nginx-deploy-55c5d4b47f-424tx -- curl http://10.96.107.232
kubectl exec nginx-deploy-55c5d4b47f-424tx -- curl nginx-service.default

### (kubernetes二進(jìn)制安裝)NodePort對外發(fā)布服務(wù)產(chǎn)生的31000是從/usr/lib/systemd/system/kube-apiserver.service配置文件--service-cluster-ip-range參數(shù)端口范圍內(nèi)手動指定
[root@k8s-master01 ~]#  cat /usr/lib/systemd/system/kube-apiserver.service | egrep "service-node-port-range"
      --service-node-port-range=30000-32767  \

三、Endpoint

Endpoint的定義

  • Endpoint是Kubernetes中的一種資源,用于描述Service的實際訪問點(diǎn)。它包含了提供服務(wù)的Pod的IP地址和端口信息。
  • 這些信息是Kubernetes實現(xiàn)服務(wù)發(fā)現(xiàn)和流量分發(fā)的關(guān)鍵依據(jù),通過記錄具體Pod的網(wǎng)絡(luò)信息,讓外部請求能夠準(zhǔn)確找到提供服務(wù)的實例。

Endpoint的作用

  • Endpoint的主要作用是將Service與后端Pod關(guān)聯(lián)起來。當(dāng)一個Service被創(chuàng)建時,Kubernetes會自動創(chuàng)建對應(yīng)的Endpoint,將Service的流量分發(fā)到后端Pod。
  • 它就像是一座橋梁,連接了抽象的服務(wù)訪問入口(Service)和實際提供服務(wù)的工作負(fù)載(Pod),確保服務(wù)請求能夠被正確地路由到可用的Pod實例上,實現(xiàn)了服務(wù)的高可用性和負(fù)載均衡。

1、Service與Endpoint參數(shù)說明

apiVersion: v1
kind: Service
metadata:
  labels:               # Service的metadata.labels參數(shù)值與Endpoints的metadata.labels參數(shù)值一樣
    app: erp-service
  name: erp-service     # Service的metadata.name參數(shù)值與Endpoints的metadata.name參數(shù)值一樣
  namespace: default
spec:
  ports:
    - name: http        # Service的spec.ports.name參數(shù)值與Endpoints的subsets.ports.name參數(shù)值一樣
      port: 80          # Service的spec.ports.port參數(shù)值與Endpoints的subsets.ports.port參數(shù)值一樣
      protocol: TCP     # Service的sepc.ports.protocol參數(shù)值與Endpoints的subsets.ports.protocol參數(shù)值一樣
      targetPort: 80
  type: ClusterIP
---
apiVersion: v1
kind: Endpoints
metadata:
  labels:               # Endpoints的metadata.labels參數(shù)值與Service的metadata.labels參數(shù)值一樣
    app: erp-service
  name: erp-service     # Endpoints的metadata.name參數(shù)值與Service的metadata.name參數(shù)值一樣
  namespace: default
subsets:                # 包含一個或多個子集,每個子集都有一個地址列表和一個端口列表
- addresses:            # 包含IP 地址列表 
  - ip: 172.17.253.111   # K8s集群外部的一臺Nginx服務(wù)器
  ports:
  - name: http          # Endpoints的subsets.ports.name參數(shù)值與Service的spec.ports.name參數(shù)值一樣
    port: 80            # Endpoints的subsets.ports.port參數(shù)值與Service的spec.ports.port參數(shù)值一樣
    protocol: TCP       # Endpoints的subsets.ports.protocol參數(shù)值與Service的sepc.ports.protocol參數(shù)值一樣

2、創(chuàng)建Service與Endpoint代理K8s集群外部服務(wù)(IP方式)

使用場景: 通過Service與Endpoint代理K8s集群外部服務(wù)指定Service名稱讓K8s集群內(nèi)Pod都能訪問到指定Service

mkdir -p /data/yaml/label
cat > /data/yaml/label/erp-endpint.yaml << 'EOF'
apiVersion: v1
kind: Service
metadata:
  labels:
    app: erp-service
  name: erp-service
  namespace: default
spec:
  ports:
    - name: http
      port: 80
      protocol: TCP
      targetPort: 80
  type: ClusterIP
---
apiVersion: v1
kind: Endpoints
metadata:
  labels:
    app: erp-service
  name: erp-service
  namespace: default
subsets:
- addresses:
  - ip: 172.17.253.111
  ports:
  - name: http
    port: 80
    protocol: TCP
EOF

kubectl create -f /data/yaml/label/erp-endpint.yaml
kubectl get svc -n default
kubectl get ep -n default

### K8s集群內(nèi)部Pod訪問Service格式(K8s集群內(nèi)部包括節(jié)點(diǎn)和Pod):相同NameSpace命名空間下Pod訪問格式:Service名稱 + 端口,不相同NameSpace命名空間下Pod訪問格式:Service名稱 + 端口 + NameSpace名稱
kubectl exec nginx-deploy-55c5d4b47f-6fjkm -- curl http://10.96.97.222
kubectl exec nginx-deploy-55c5d4b47f-6fjkm -- curl http://erp-service
kubectl exec nginx-deploy-55c5d4b47f-6fjkm -- curl http://erp-service.default

3、創(chuàng)建Service代理K8s集群外部服務(wù)(域名方式)

提示:Service ExternalName參數(shù)是 Service 的一個特例,它沒有 Selector,也沒有定義任何端口和 Endpoint,它通過返回該外部服務(wù)的別名來提供服務(wù)。比如可以定義一個 Service,后端設(shè)置為一個外部域名,這樣通過 Service 的名稱即可訪問到該域名

注意:需要訪問Service ExternalName的Pod需要與創(chuàng)建Service ExternalName在同一個namespace命名空間

mkdir -p /data/yaml/label
cat > /data/yaml/label/nginx-service-externalname.yaml << 'EOF'
apiVersion: v1
kind: Service
metadata:
  name: erp-service-url
  namespace: default
spec:
  type: ExternalName
  externalName: erp.test.com
 #externalName: erp.test.com.kube-system.cluster.local  # 讓kube-system命名空間下的Pod能訪問到default命名空間下的Service ExternalName
EOF

kubectl create -f /data/yaml/label/nginx-service-externalname.yaml
kubectl get svc -n default

### 進(jìn)入到任意一個Pod測試訪問K8s集群外部服務(wù)
kubectl exec nginx-deploy-55c5d4b47f-6fjkm -- curl erp-service-url
kubectl exec nginx-deploy-55c5d4b47f-6fjkm -- curl erp-service-url.default

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • K8s學(xué)習(xí)之Pod的定義及詳細(xì)資源調(diào)用案例

    K8s學(xué)習(xí)之Pod的定義及詳細(xì)資源調(diào)用案例

    Kubernetes將所有內(nèi)容抽象為資源,通過操作資源管理集群,核心單元是Pod,通過控制器管理Pod,資源管理分為命令式對象管理、命令式對象配置和聲明式對象配置,各有適用場景,需要的朋友可以參考下
    2024-09-09
  • Rainbond自動部署初始化Schema的數(shù)據(jù)庫步驟教程

    Rainbond自動部署初始化Schema的數(shù)據(jù)庫步驟教程

    這篇文章主要為大家介紹了Rainbond自動部署初始化Schema的數(shù)據(jù)庫過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • 快速搞定K8S新老版本的證書續(xù)期問題

    快速搞定K8S新老版本的證書續(xù)期問題

    本文介紹了Kubernetes集群證書續(xù)期的步驟,包括更新證書、替換CCNA證書、重啟相關(guān)組件以及驗證新證書的有效性
    2026-01-01
  • 如何在 K8S 中使用 Values 文件定制不同環(huán)境下的應(yīng)用配置

    如何在 K8S 中使用 Values 文件定制不同環(huán)境下的應(yīng)用配置

    Kubernetes是一個開源的容器編排平臺,它可以自動化容器的部署、擴(kuò)展和管理,在 K8s 中,應(yīng)用程序通常以容器的形式運(yùn)行,這些容器被組織在不同的資源對象中,這篇文章主要介紹了如何在 K8S 中使用 Values 文件定制不同環(huán)境下的應(yīng)用配置,需要的朋友可以參考下
    2025-03-03
  • k8s調(diào)度原理和策略詳解

    k8s調(diào)度原理和策略詳解

    Kubernetes調(diào)度器通過節(jié)點(diǎn)預(yù)選、優(yōu)先級排序和節(jié)點(diǎn)選定三階段分配Pod,基于資源類型(可壓縮/不可壓縮)、親和性(硬/軟)、污點(diǎn)與容忍度機(jī)制,實現(xiàn)靈活調(diào)度與搶占,優(yōu)化資源利用率和集群穩(wěn)定性
    2025-09-09
  • K8s實戰(zhàn)教程之容器和?Pods資源分配問題

    K8s實戰(zhàn)教程之容器和?Pods資源分配問題

    這篇文章主要介紹了K8s實戰(zhàn)教程之容器和?Pods資源分配,本篇文章通過配置集群中運(yùn)行的容器的?CPU?請求和限制,你可以有效利用集群上可用的?CPU?資源,通過將?Pod?CPU?請求保持在較低水平,可以使?Pod?更有機(jī)會被調(diào)度,需要的朋友可以參考下
    2022-07-07
  • k8s容器的內(nèi)存設(shè)置的踩坑記錄

    k8s容器的內(nèi)存設(shè)置的踩坑記錄

    這篇文章主要介紹了k8s容器的內(nèi)存設(shè)置的踩坑記錄,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-07-07
  • k8s調(diào)度原理以及自定義調(diào)度器方式

    k8s調(diào)度原理以及自定義調(diào)度器方式

    文章主要介紹了Kubernetes中的kube-scheduler組件及其調(diào)度流程,然后詳細(xì)講解了如何通過調(diào)度器擴(kuò)展程序和調(diào)度框架來定制和擴(kuò)展調(diào)度器,包括創(chuàng)建簡單的自定義調(diào)度器擴(kuò)展程序和調(diào)度框架插件的實現(xiàn)步驟,最后討論了自定義調(diào)度策略時需要注意的問題及解決方案
    2026-04-04
  • K8S修改Pod時間方案詳細(xì)代碼實例

    K8S修改Pod時間方案詳細(xì)代碼實例

    在Kubernetes中,修改Pod的時間通常指的是修改Pod的時區(qū)設(shè)置,因為Pod的時間戳(如創(chuàng)建時間)是由Kubernetes集群管理的,并且通常不建議直接修改,這篇文章主要介紹了K8S修改Pod時間方案的相關(guān)資料,需要的朋友可以參考下
    2025-08-08
  • kubeadm?搭建?K8s的詳細(xì)過程

    kubeadm?搭建?K8s的詳細(xì)過程

    這篇文章主要介紹了kubeadm?搭建?K8s詳細(xì)過程,環(huán)境使用?VirtualBox?構(gòu)建的3臺虛擬機(jī),虛擬機(jī)網(wǎng)絡(luò)配置的相關(guān)步驟給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04

最新評論

博罗县| 三门峡市| 五常市| 仙居县| 海口市| 松江区| 张掖市| 五台县| 呼伦贝尔市| 聊城市| 奉化市| 垫江县| 新邵县| 龙山县| 禄丰县| 奎屯市| 阿拉善左旗| 泾源县| 阆中市| 黔西| 界首市| 晋中市| 广灵县| 平泉县| 和政县| 丹东市| 正宁县| 始兴县| 婺源县| 廊坊市| 西昌市| 田东县| 宁南县| 兰溪市| 斗六市| 庆城县| 濮阳县| 曲周县| 尉氏县| 白城市| 云安县|