<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          漲姿勢(shì)!將部署在虛擬機(jī)里的服務(wù)接入Istio

          共 3572字,需瀏覽 8分鐘

           ·

          2021-06-03 21:13

          來(lái)源:https://segmentfault.com/a/1190000038799970

          Istio在設(shè)計(jì)之初,主要面向Kubernetes當(dāng)中的服務(wù)。但是在實(shí)際場(chǎng)景中,依舊有不少服務(wù)部署在VM上,Istio想成為Service Mesh事實(shí)上的標(biāo)準(zhǔn),毫無(wú)疑問(wèn)需要支持VM部署的服務(wù)。
          Istio1.6 新增了 WorkloadEntry 自定義資源,通過(guò)該資源為VM提供了一流的支持。
          Istio1.7 增加了安全引導(dǎo)VM中運(yùn)行的服務(wù)的身份的功能。最后,Istio 1.7增加了Sidecar的安裝包,以支持CentOS/Red Hat和現(xiàn)有的Debian/Ubuntu。
          Istio1.8 新增了智能 DNS 代理,它是由 Go 編寫(xiě)的 Istio sidecar 代理,sidecar 上的 Istio agent 將附帶一個(gè)由 Istiod 動(dòng)態(tài)編程的緩存 DNS 代理。來(lái)自應(yīng)用程序的 DNS 查詢(xún)會(huì)被 pod 或 VM 中的 Istio 代理透明地?cái)r截和服務(wù),該代理會(huì)智能地響應(yīng) DNS 查詢(xún)請(qǐng)求,可以實(shí)現(xiàn)虛擬機(jī)到服務(wù)網(wǎng)格的無(wú)縫多集群訪(fǎng)問(wèn)。
          并且Istio1.8新增了 WorkloadGroup 自定義資源,該資源是描述部署在VM上的服務(wù)實(shí)例的集合,旨在模仿現(xiàn)有的用于Kubernetes工作負(fù)載的Sidecar注入和Deployment規(guī)范模型,以引導(dǎo)Istio代理。
          通過(guò) WorkloadGroup方式, 實(shí)現(xiàn)VM 實(shí)例自動(dòng)注冊(cè)的功能目前處于pre-alpha狀態(tài)

          WorkloadEntry

          WorkloadEntry用來(lái)描述非Pod的端點(diǎn),將VM納入mesh中。此時(shí)VM成為像Pod一樣的一等公民,可以配置MUTUAL_TLS。
          要?jiǎng)?chuàng)建一個(gè)WorkloadEntry并將其附加到ServiceEntry,執(zhí)行以下操作:
          apiVersion: networking.istio.io/v1alpha3
          kind: WorkloadEntry
          metadata:
          name: vm1
          namespace: ns1
          spec:
          address: 1.1.1.1
          labels:
          app: foo
          instance-id: vm-78ad2
          class: vm
          ---
          apiVersion: networking.istio.io/v1alpha3
          kind: ServiceEntry
          metadata:
          name: svc1
          namespace: ns1
          spec:
          hosts:
          - svc1.internal.com
          ports:
          - number: 80
          name: http
          protocol: HTTP
          resolution: STATIC
          workloadSelector:
          labels:
          app: foo
          這將創(chuàng)建一個(gè)包含一組標(biāo)簽和地址的新WorkloadEntry,以及一個(gè)使用WorkloadSelector選擇帶有所需標(biāo)簽的所有端點(diǎn)的ServiceEntry,在這種情況下,包括為VM創(chuàng)建的WorkloadEntry。



          請(qǐng)注意,ServiceEntry可以使用相同的選擇器引用Pod和WorkloadEntries?,F(xiàn)在,Istio可以對(duì)VM和Pod進(jìn)行相同的處理,而不必將它們分開(kāi)。

          VM自動(dòng)注冊(cè)

          WorkloadGroup主要用于 WorkloadEntry 自動(dòng)注冊(cè),該功能在實(shí)際場(chǎng)景中比較實(shí)用。事實(shí)上我們部署在VM當(dāng)中的服務(wù),一般都會(huì)配置自動(dòng)伸縮,這就要求我們的服務(wù)必須可以自動(dòng)注冊(cè)到mesh中。
          如何實(shí)現(xiàn)自動(dòng)注冊(cè)那?
          首先我們需要做一些準(zhǔn)備工作:
          • 在安裝istiod的時(shí)候,啟用自動(dòng)注冊(cè)的功能。
          $ istioctl install --set values.pilot.env.PILOT_ENABLE_WORKLOAD_ENTRY_AUTOREGISTRATION=true
          • 部署一個(gè)east-west gateway。用于暴露istiod服務(wù),從而可以讓VM上的Sidecar 可以和istiod 通信。
          然后我們創(chuàng)建如下的 WorkloadGroup:
          apiVersion: networking.istio.io/v1alpha3
          kind: WorkloadGroup
          metadata:
          name: python-http
          namespace: vm
          spec:
          metadata:
          annotations: {}
          labels:
          app: python-http
          template:
          ports: {}
          serviceAccount: my-vm
          這樣我們?cè)诿總€(gè)vm上python-http 實(shí)例啟動(dòng)后,都會(huì)自動(dòng)在mesh中創(chuàng)建一個(gè)WorkloadEntry。而創(chuàng)建的WorkloadEntry,包含了VM實(shí)例的ip和元數(shù)據(jù)。此時(shí)我們就可以創(chuàng)建一個(gè)ServiceEntry,通過(guò)標(biāo)簽選擇器選擇我們的WorkloadEntry。然后mesh中的其他服務(wù)就可以通過(guò)ServiceEntry中的hosts, 對(duì)我們的python-http服務(wù)進(jìn)行訪(fǎng)問(wèn)。
          apiVersion: networking.istio.io/v1beta1
          kind: ServiceEntry
          metadata:
          name: vm-workload-svc
          namespace: vm
          spec:
          hosts:
          - vmservice.example.com
          location: MESH_INTERNAL
          ports:
          - number: 80
          name: http
          protocol: HTTP
          targetPort: 9090
          resolution: STATIC
          workloadSelector:
          labels:
          app: python-http



          關(guān)于VM詳細(xì)的安裝步驟,參考官方文檔。

          智能DNS

          其實(shí)完成VM自動(dòng)注冊(cè),并不能通過(guò)主機(jī)名實(shí)現(xiàn)虛擬機(jī)到服務(wù)網(wǎng)格的無(wú)縫訪(fǎng)問(wèn)。例如,如果我們?cè)赩M上部署Istio sidecar代理,我們將無(wú)法通過(guò)主機(jī)名(例如httpbin.default.svc.cluster.local)訪(fǎng)問(wèn)網(wǎng)格和Kubernetes集群中服務(wù)。此時(shí)我們需要智能DNS。
          在Istio 1.8中,Sidecar現(xiàn)在具有一個(gè)DNS代理,該代理緩存網(wǎng)格中的端點(diǎn)和ServiceEntry資源創(chuàng)建的端點(diǎn)。通過(guò)Iptables規(guī)則,攔截dns請(qǐng)求到sidecar 本地dns server,在緩存中可以解析的主機(jī)名,則直接返回解析結(jié)果,如果找不到,它將作為普通DNS代理委派給系統(tǒng)DNS。這樣vm上的服務(wù)可以通過(guò)主機(jī)名訪(fǎng)問(wèn)mesh中的服務(wù)。



          智能DNS 默認(rèn)沒(méi)有啟用,我們?cè)诎惭bistio的時(shí)候,可以通過(guò)如下參數(shù)啟用該功能:
          --set meshConfig.defaultConfig.proxyMetadata.ISTIO_META_DNS_CAPTURE=true
          總結(jié)
          當(dāng)VM連接到Istio控制平面時(shí),它通過(guò)“東西向網(wǎng)關(guān)”進(jìn)行連接。該網(wǎng)關(guān)實(shí)際上只是一個(gè)專(zhuān)門(mén)為網(wǎng)格內(nèi)部流量指定的Istio網(wǎng)關(guān),現(xiàn)在,東西向網(wǎng)關(guān)已經(jīng)是Istio 1.8中的推薦部署。一旦從VM Sidecar到Istio控制平面建立了連接,便會(huì)創(chuàng)建適當(dāng)?shù)腤orkloadEntry資源,并使VM Sidecar可以解析集群中的所有服務(wù)。從VM上部署服務(wù)可以直接訪(fǎng)問(wèn)httpbin.default.svc.cluster.local。DNS名稱(chēng)由代理解析,并通過(guò)“東西方網(wǎng)關(guān)”路由到網(wǎng)格中的適當(dāng)服務(wù)。


          - END -


           推薦閱讀 

          31天拿下Kubernetes含金量最高的CKA證書(shū)! 
          Linux 系統(tǒng)中成功恢復(fù)已刪除的文件
          圖解 Kafka,入門(mén)好文
          Linux 系統(tǒng)安全強(qiáng)化指南
          這個(gè)程序占用CPU特別高!秒級(jí)定位線(xiàn)上問(wèn)題
          從零開(kāi)始搭建創(chuàng)業(yè)公司DevOps技術(shù)棧
          Shell 腳本進(jìn)階,經(jīng)典用法及其案例
          2021年的DevOps趨勢(shì)預(yù)測(cè)
          Kubernetes+Helm+Jenkins 自動(dòng)化發(fā)布項(xiàng)目
          搭建一套完整的企業(yè)級(jí) K8s 集群(v1.20,kubeadm方式)
          60道常見(jiàn)的 Kubernetes 面試題總結(jié)



          點(diǎn)亮,服務(wù)器三年不宕機(jī)

          瀏覽 67
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  久久新地址| 成人自拍偷拍视频 | 亚洲视频在线免费看 | 男人的天堂青青草原 | 无码影院在线观看 |