国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

玩轉(zhuǎn)k8s(四)—— 通過Service訪問Pod

這篇具有很好參考價值的文章主要介紹了玩轉(zhuǎn)k8s(四)—— 通過Service訪問Pod。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

????????我們不應(yīng)該期望k8s Pod是健壯的,而是要假設(shè)Pod中的容器很可能因為各種原因發(fā)生故障而死掉。Deployment等Controller會通過動態(tài)的創(chuàng)建和銷毀Pod來保證應(yīng)用整體的健壯性。換句話說,Pod是脆弱的,但應(yīng)用是健壯的

? ? ? ? 每個Pod都有自己的IP地址,當Controller用新的Pod替代發(fā)生故障的Pod時,新Pod會分配新的IP地址,這就產(chǎn)生了一個問題:如果一組Pod對外提供服務(wù),它們的IP很有可能發(fā)生變化,那么客戶端如何找到并訪問這個服務(wù)呢?答案就是Service。

一、創(chuàng)建Service

K8s Service從邏輯上代表一組Pod,具體是哪些Pod則是由label來挑選的。Service有自己的IP,而且這個IP是不變的。客戶端只需要訪問Service的IP,k8s則負責建立和維護Service與Pod的映射關(guān)系。無論后端Pod如何變化,對客戶端不會有任何影響,因為Service沒有變。

(1)創(chuàng)建deployment

apiVersion: apps/v1
kind: Deployment
metadata:
  name: httpd-deployment
  labels:
    app: httpd
spec:
  replicas: 3
  selector:
    matchLabels:
      app: httpd
  template:
    metadata:
      labels:
        app: httpd
    spec:
      containers:
      - name: httpd
        image: httpd:latest
        ports:
        - containerPort: 80

(2)apply一下

zy@k8s-master:~$ kubectl apply -f httpd.yml 
deployment.apps/httpd-deployment created

(3)查看pod

pod分配了各自的IP,這些IP只能被Kubernetes Cluster中的容器和節(jié)點訪問。

zy@k8s-master:~$ kubectl get pod -o wide
NAME                                READY   STATUS    RESTARTS   AGE   IP            NODE        NOMINATED NODE   READINESS GATES
httpd-deployment-59fc85cfcd-kz4m8   1/1     Running   0          92s   10.244.1.17   k8s-node1   <none>           <none>
httpd-deployment-59fc85cfcd-m2tc4   1/1     Running   0          92s   10.244.2.11   k8s-node2   <none>           <none>
httpd-deployment-59fc85cfcd-nz4x5   1/1     Running   0          92s   10.244.2.12   k8s-node2   <none>           <none>

(4)創(chuàng)建Service

編寫service配置文件

apiVersion: v1
kind: Service
metadata:
    name: httpd-svc
spec:
    selector:
        run: httpd
    ports:
        - protocol: TCP
          port: 8080
          targetPort: 80

以上代碼是 Kubernetes 中的 YAML 文件,用于創(chuàng)建一個名為 httpd-svc 的 Service 資源。該 Service 資源會將流量路由到擁有標簽 run=httpd 的 Pod 上,同時將流量從端口 8080 轉(zhuǎn)發(fā)到 Pod 中的端口 80。具體來說,代碼的各個部分含義如下:

  • apiVersion: v1: 指定 Kubernetes API 版本為 v1,也就是最基本的 API 版本。
  • kind: Service: 指定創(chuàng)建的資源類型為 Service。
  • metadata: 定義元數(shù)據(jù),包括資源的名稱等信息。
  • name: httpd-svc: 指定該 Service 資源的名稱為 httpd-svc。
  • spec: 定義 Service 的規(guī)范,包括 Service 所要匹配的 Pod 標簽以及端口信息。
  • selector: 指定 Service 所要匹配的 Pod 標簽,這里是 run=httpd,表示該 Service 會將流量路由到所有擁有標簽 run=httpd 的 Pod 上。
  • ports: 定義 Service 的端口映射規(guī)則,包括協(xié)議、端口號和目標端口號。這里的含義是將 Service 的 8080 端口映射到 Pod 中的 80 端口上。

apply一下:

zy@k8s-master:~$ kubectl apply -f httpd-service.yml 
service/httpd-svc created

查看service:

zy@k8s-master:~$ kubectl get svc
NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)    AGE
httpd-svc    ClusterIP   10.98.248.61   <none>        8080/TCP   3m13s
kubernetes   ClusterIP   10.96.0.1      <none>        443/TCP    26h

(5)查看service的詳細信息

y@k8s-master:~$ kubectl describe service httpd-service 
Name:              httpd-service
Namespace:         default
Labels:            <none>
Annotations:       <none>
Selector:          app=httpd,run=httpd
Type:              ClusterIP
IP:                10.102.206.215
Port:              http  80/TCP
TargetPort:        80/TCP
Endpoints:         10.244.1.21:80,10.244.1.22:80,10.244.2.16:80
Session Affinity:  None
Events:            <none>

endpoints羅列了三個Pod的IP和端口。我們知道Pod的IP是在容器中配置的,那么service的集群IP又是在哪里配置的呢?集群IP如何映射到pod的IP呢?答案是 iptables

二、外網(wǎng)如何訪問Service

出來Cluster內(nèi)部可以訪問Service,很多情況下我們也希望應(yīng)用的Service能夠暴露給Cluster外部。K8s提供了多種類型的Service,默認是ClusterIP。

(1)ClusterIP

? ? ? ? Service通過集群內(nèi)部的IP對外提供服務(wù),只有Cluster內(nèi)的節(jié)點和pod可訪問,這是默認的service類型。

(2)NodePort

? ? ? ? service通過Cluster節(jié)點的靜態(tài)端口對外提供服務(wù)。Cluster外部可以通過 <NodeIP>:<NodePort>訪問Service

(3)LoadBalancer

? ? ? ? Service利用cloud provider 特有的負載均衡對外提供服務(wù),云提供者負責將負載均衡的流量導(dǎo)向Service。文章來源地址http://www.zghlxwxcb.cn/news/detail-446772.html

到了這里,關(guān)于玩轉(zhuǎn)k8s(四)—— 通過Service訪問Pod的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • k8s集群中service的域名解析、pod的域名解析

    在k8s集群中,service和pod都可以通過域名的形式進行相互通信,換句話說,在k8s集群內(nèi),通過service和pod的域名,可以直接訪問內(nèi)部應(yīng)用,不必在通過service ip地址進行通信,一般的,我們創(chuàng)建service的時候不建議指定service的clusterIP,而是讓k8s自動為service分配一個clusterIP,這樣,

    2024年02月01日
    瀏覽(21)
  • 持續(xù)集成部署-k8s-服務(wù)發(fā)現(xiàn)-Service:Service、Endpoint、Pod之間的關(guān)系與原理

    在 Kubernetes 中, Service 是一種抽象的邏輯概念,用于將一組具有相同功能的 Pod 組合成一個邏輯服務(wù)。 Service 提供了一種穩(wěn)定的 IP 地址和 DNS 域名,供客戶端訪問這個邏輯服務(wù)。同時, Service 還提供了負載均衡、會話保持等功能,可以很方便地實現(xiàn)服務(wù)發(fā)現(xiàn)與調(diào)用。 在 Kuber

    2024年02月06日
    瀏覽(35)
  • 云原生-k8s核心概念(pod,deploy,service,ingress,configmap,volume)

    云原生-k8s核心概念(pod,deploy,service,ingress,configmap,volume)

    Gitee-k8s學(xué)習 云原生實戰(zhàn)-kubernetes核心實戰(zhàn) Namespace是kubernetes系統(tǒng)中的一種非常重要資源,它的主要作用是用來實現(xiàn)多套環(huán)境的資源隔離或者多租戶的資源隔離 Pod可以認為是容器的封裝,一個Pod中可以存在一個或者多個容器。 kubernetes很少直接控制Pod,一般都是通過Pod控制器來

    2024年02月03日
    瀏覽(165)
  • k8s如何訪問 pod 元數(shù)據(jù)

    k8s如何訪問 pod 元數(shù)據(jù)

    **我們在 pod 中運行容器的時候,是否也會有想要獲取當前 pod 的環(huán)境信息呢?**咱們寫的 yaml 清單寫的很簡單,實際上部署之后, k8s 會給我們補充在 yaml 清單中沒有寫的字段,那么我們的 pod 環(huán)境信息和容器的元數(shù)據(jù)如何傳遞到容器中呢?是不是也是通過獲取這些 k8s 默認給

    2024年02月16日
    瀏覽(28)
  • k8s通過命令批量刪除pod

    k8s批量刪除失敗的pod 查看所有的pod 選擇STATUS列,查看某namespace的非Running的記錄,比如: 解析: 獲取所有的pods及其狀態(tài) 篩選出命名空間kube-system的記錄,默認視default grep選出帶有Evicted字段pod 通過awk,獲取第一列信息,也就是NAME 使用xargs指令,循環(huán)刪除失敗的pod

    2024年02月11日
    瀏覽(18)
  • Kubernetes 啟動Pod的方法-Pod的調(diào)度算法-Pod間的通信-k8s的控制器-Pod資源控制-發(fā)布Service服務(wù)

    Kubernetes 啟動Pod的方法-Pod的調(diào)度算法-Pod間的通信-k8s的控制器-Pod資源控制-發(fā)布Service服務(wù)

    目錄 Pod 參考文檔:Pod | Kubernetes Pod配置文件:simple-pod.yaml 對master進行如下操作 Pod的狀態(tài)有: 參考文檔:(70條消息) Pod生命周期中的狀態(tài)解釋_pod狀態(tài)_鬧玩兒扣眼珠子的博客-CSDN博客 進入Pod內(nèi)的nginx容器: 當我們創(chuàng)建一個Pod,其中的步驟是什么?(啟動Pob的流程) 大概步驟:

    2024年02月13日
    瀏覽(100)
  • k8s外部訪問pod內(nèi)部容器的端口-NodePort

    k8s外部訪問pod內(nèi)部容器的端口-NodePort

    Kubernetes的Pod IP和Cluster IP都只能在集群內(nèi)部訪問,而我們通常需要從外部網(wǎng)絡(luò)上訪問集群中的某些服務(wù),Kubernetes提供了下述幾種方式來為集群提供外部流量入口。 有一pod,里面有rabbitmq服務(wù),先想從外部通過ip:15672訪問MQ的管理員界面查看隊列消費情況。 方法1(pod會重啟): 方法

    2023年04月23日
    瀏覽(26)
  • 從外部訪問K8s中Pod的五種方式

    hostNetwork、 hostPort、 NodePort、 LoadBalancer、 Ingress 暴露Pod與Service一樣,因為Pod就是Service的backend 這是一種直接定義 Pod 網(wǎng)絡(luò)的方式。 如果在 Pod 中使用?hostNetwork:true?配置, pod 中運行的應(yīng)用程序可以直接看到 pod 啟動的主機的網(wǎng)絡(luò)接口。 在主機的所有網(wǎng)絡(luò)接口上都可以訪問到該

    2024年02月12日
    瀏覽(19)
  • k8s自定義Endpoint實現(xiàn)內(nèi)部pod訪問外部應(yīng)用

    k8s自定義Endpoint實現(xiàn)內(nèi)部pod訪問外部應(yīng)用

    endpoint除了可以暴露pod的IP和端口還可以代理到外部的ip和端口 使用場景 公司業(yè)務(wù)還還沒有完成上云, 一部分云原生的,一部分是實體的 業(yè)務(wù)上云期間逐步實現(xiàn)上云,保證各個模塊之間的解耦性 比如使用云數(shù)據(jù)庫或者實體數(shù)據(jù)庫服務(wù)器啥的,因為像數(shù)據(jù)庫實現(xiàn)容器化的話在

    2024年01月25日
    瀏覽(26)
  • 【Java】基于fabric8io庫操作k8s集群實戰(zhàn)(pod、deployment、service、volume)

    【Java】基于fabric8io庫操作k8s集群實戰(zhàn)(pod、deployment、service、volume)

    一開始了解到Java Api庫操作k8s集群,有兩個,分別為: kubernetes-client/java fabric8io/kubernetes-client 但個人對比使用了兩個發(fā)現(xiàn),還是 fabric8io更易用 ,用的人多是有道理的, fabric8io和yaml文件十分貼切 ,所以 通俗易懂 。本文前提是已配置好集群,已經(jīng)熟悉了kubectl工具常用命令。

    2024年02月02日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包