Conas Istio a rith ag baint úsáide as Kubernetes i dtáirgeadh. Cuid 1

Cad é Istio? Is é seo an mogalra Seirbhíse mar a thugtar air, teicneolaíocht a chuireann sraith astarraingthe thar an líonra. Déanaimid an trácht go léir nó cuid de a thascradh sa bhraisle agus déanaimid sraith áirithe oibríochtaí leis. Cé acu? Mar shampla, déanaimid ródú cliste, nó cuirimid an cur chuige scoradáin chiorcaid i bhfeidhm, is féidir linn “imscaradh canáraí” a eagrú, trácht a aistriú go páirteach go leagan nua den tseirbhís, nó is féidir linn idirghníomhaíochtaí seachtracha a theorannú agus gach turas a rialú ón mbraisle go dtí an líonra seachtrach. Is féidir rialacha beartais a shocrú chun turais idir micrisheirbhísí éagsúla a rialú. Ar deireadh, is féidir linn an léarscáil idirghníomhaíochta líonra iomlán a fháil agus an bailiúchán aontaithe méadrach a dhéanamh go hiomlán trédhearcach d'iarratais.

Is féidir leat léamh faoi mheicníocht na hoibre i doiciméadú oifigiúil. Is uirlis fíorchumhachtach é Istio a ligeann duit go leor tascanna agus fadhbanna a réiteach. San Airteagal seo, ba mhaith liom na príomhcheisteanna a thagann chun cinn de ghnáth agus tú ag tosú le Istio a fhreagairt. Cabhróidh sé seo leat déileáil leis níos tapúla.

Conas Istio a rith ag baint úsáide as Kubernetes i dtáirgeadh. Cuid 1

Prionsabal oibríochta

Tá dhá phríomhréimse comhdhéanta de Istio - an t-eitleán rialaithe agus an t-eitleán sonraí. Tá na príomhchodanna san eitleán rialaithe a áirithíonn oibriú ceart an chuid eile. Sa leagan reatha (1.0) tá trí phríomhchuid ag an eitleán rialaithe: Píolótach, Meascthóir, Citadel. Ní bhreithneoidh muid Citadel, tá gá le deimhnithe a ghiniúint chun TLS frithpháirteach idir seirbhísí a chinntiú. Breathnaímis níos dlúithe ar ghléas agus ar chuspóir an Phíolótaigh agus na Meascthóir.

Conas Istio a rith ag baint úsáide as Kubernetes i dtáirgeadh. Cuid 1

Is é píolótach an phríomhghné rialaithe a dháileann an fhaisnéis go léir faoina bhfuil againn sa bhraisle - seirbhísí, a gcríochphointí agus rialacha ródaithe (mar shampla, rialacha maidir le himscaradh Chanárach nó rialacha maidir le scoradáin chiorcaid).

Is comhpháirt eitleán rialaithe roghnach é meascthóir a sholáthraíonn an cumas méadracht, logaí, agus aon fhaisnéis faoi idirghníomhaíocht líonra a bhailiú. Déanann sé monatóireacht freisin ar chomhlíonadh rialacha Beartais agus comhlíonadh teorainneacha rátaí.

Cuirtear an t-eitleán sonraí i bhfeidhm ag baint úsáide as coimeádáin seachfhreastalaí taobhcharr. Úsáidtear cumhachtach de réir réamhshocraithe. seachfhreastalaí toscaire. Is féidir cur chun feidhme eile a chur ina ionad, mar shampla nginx (nginmesh).

D'fhonn Istio a bheith ag obair go hiomlán trédhearcach d'iarratais, tá córas insteallta uathoibríoch. Tá an cur i bhfeidhm is déanaí oiriúnach do leaganacha Kubernetes 1.9+ (ceangán gréasáin iontrála sócháin). I gcás leaganacha Kubernetes 1.7, 1.8 is féidir an Túsálaí a úsáid.

Tá coimeádáin taobhcharr ceangailte le Pilot ag baint úsáide as prótacal GRPC, a ligeann duit an tsamhail bhrú a bharrfheabhsú le haghaidh athruithe a tharlaíonn sa bhraisle. Tá GRPC in úsáid in Toscaire ó leagan 1.6, in Istio tá sé in úsáid ó leagan 0.8 agus is gníomhaire píolótach é - fillteán golang thar thoscaire a chumraíonn roghanna seolta.

Is comhpháirteanna go hiomlán gan stát iad Píolótach agus Meascthóir, coinnítear gach stát i gcuimhne. Socraítear an chumraíocht dóibh i bhfoirm Kubernetes Custom Resources, a stóráiltear i etcd.
Faigheann Istio-agent seoladh an Phíolótaigh agus osclaíonn sé sruth GRPC chuige.

Mar a dúirt mé, cuireann Istio an fheidhmiúlacht go léir i bhfeidhm go hiomlán trédhearcach d’fheidhmchláir. A ligean ar a fheiceáil conas. Seo é an t-algartam:

  1. Leagan nua den tseirbhís a imscaradh.
  2. Ag brath ar an gcur chuige instealladh coimeádán taobhcharr, cuirtear an coimeádán istio-init agus an coimeádán istio-ghníomhaire (toscaire) ag an gcéim chun an chumraíocht a chur i bhfeidhm, nó is féidir iad a chur isteach de láimh cheana féin sa tuairisc ar an eintiteas Kubernetes Pod.
  3. Is script é an coimeádán istio-init a chuireann na rialacha iptables i bhfeidhm ar an pod. Tá dhá rogha ann chun trácht a chumrú le bheith fillte i gcoimeádán istio-ghníomhaire: úsáid rialacha atreoraithe iptables, nó TPROXY. Agus é seo á scríobh, baineann an cur chuige réamhshocraithe le rialacha atreoraithe. In istio-init, is féidir a chumrú cén trácht ba cheart a idircheapadh agus a sheoladh chuig istio-ghníomhaire. Mar shampla, chun gach trácht isteach agus amach a thascradh, ní mór duit na paraiméadair a shocrú -i и -b isteach sa chiall *. Is féidir leat calafoirt ar leith a thascradh a shonrú. Chun nach ndéanfar folíon ar leith a thascradh, is féidir leat é a shonrú ag baint úsáide as an bhratach -x.
  4. Tar éis na coimeádáin init a fhorghníomhú, seoltar na príomhchinn, lena n-áirítear an gníomhaire píolótach (toscaire). Nascann sé leis an bPíolótach atá imscartha cheana féin trí GRPC agus faigheann sé faisnéis faoi na seirbhísí reatha agus na beartais ródaithe go léir sa bhraisle. De réir na sonraí a fuarthas, socraíonn sé na braislí agus sannann sé iad go díreach chuig críochphointí ár n-iarratas i mbraisle Kubernetes. Is gá pointe tábhachtach a thabhairt faoi deara freisin: socraíonn toscaire go dinimiciúil éisteoirí (IP, péirí calafoirt) a thosaíonn sé ag éisteacht leo. Mar sin, nuair a théann iarratais isteach sa phod, a atreoraítear ag baint úsáide as na rialacha iptables atreoraithe sa taobhcharr, is féidir leis an toscaire cheana féin na naisc seo a phróiseáil go rathúil agus tuiscint a fháil ar an áit chun an trácht a sheachvótáil tuilleadh. Chomh maith leis sin ag an gcéim seo, seoltar faisnéis chuig an Meascthóir, a bhreathnóimid air níos déanaí, agus seoltar raonta rianaithe.

Mar thoradh air sin, faigheann muid líonra iomlán de fhreastalaithe seachfhreastalaí toscaire is féidir linn a chumrú ó phointe amháin (Píolótach). Téann gach iarratas isteach agus amach trí thoscaire. Ina theannta sin, ní dhéantar ach trácht TCP a idircheapadh. Ciallaíonn sé seo go ndéantar IP seirbhíse Kubernetes a réiteach ag baint úsáide as kube-dns thar UDP gan athrú. Ansin, tar éis an réitigh, déantar an t-iarratas amach a idircheapadh agus a phróiseáil le toscaire, a chinneann cheana féin cén críochphointe ar cheart an t-iarratas a sheoladh chuige (nó nár cheart a sheoladh, i gcás polasaithe rochtana nó scoradáin chiorcaid an algartam).

Rinneamar amach Píolótach, anois ní mór dúinn a thuiscint conas a oibríonn Meascthóir agus cén fáth a bhfuil gá leis. Is féidir leat an doiciméadú oifigiúil a léamh dó anseo.

Tá dhá chomhpháirt i meascthóir ina fhoirm reatha: istio-teiliméadracht, istio-polasaí (roimh leagan 0.8 bhí sé ina chomhpháirt istio-meascthóir amháin). Is meascthóir iad an bheirt acu, agus tá gach ceann acu freagrach as a thasc féin. Faigheann Istio teiliméadracht faisnéis faoi cé a théann an áit agus cad iad na paraiméadair ó thaobhcharr Tuairisc coimeádáin trí GRPC. Glacann Istio-polasaí le hiarratais Seiceála chun a fhíorú go bhfuil rialacha an Bheartais á gcomhlíonadh. Ar ndóigh, ní dhéantar seiceálacha beartais do gach iarratas, ach déantar iad a thaisceadh ar an gcliant (sa taobhcharr) ar feadh tréimhse áirithe ama. Seoltar seiceálacha tuairisce mar iarratais bhaisc. A ligean ar a fheiceáil conas a chumrú agus cad paraiméadair ba chóir a sheoladh beagán níos déanaí.

Tá an Meascthóir ceaptha a bheith ina chomhpháirt an-infhaighte a chinntíonn obair gan bhriseadh ar thionól agus próiseáil sonraí teiliméadrachta. Faightear an córas mar mhaolán il-leibhéil mar thoradh air. Ar dtús, déantar sonraí a mhaolánú ar thaobh taobhcharr na gcoimeádán, ansin ar thaobh an mheascthóra, agus ansin iad a sheoladh chuig na haisil meascáin mar a thugtar orthu. Mar thoradh air sin, má theipeann ar aon cheann de na comhpháirteanna córais, fásann an maolán agus flushed tar éis an córas a athchóiriú. Is críochphointí iad aislínte meascthóir chun sonraí teiliméadrachta a sheoladh: statsd, newrelic, etc. Is féidir leat do inneall féin a scríobh, tá sé simplí go leor, agus feicfimid conas é a dhéanamh.

Conas Istio a rith ag baint úsáide as Kubernetes i dtáirgeadh. Cuid 1

Mar achoimre, is mar seo a leanas atá an scéim chun oibriú le teiliméadracht.

  1. Seolann Seirbhís 1 iarratas chuig seirbhís 2.
  2. Nuair a fhágann sé seirbhís 1, tá an t-iarratas fillte ina thaobhcharr féin.
  3. Déanann toscaire taobhcharr monatóireacht ar an gcaoi a dtéann an t-iarratas chuig seirbhís 2 agus ullmhaíonn sé an fhaisnéis riachtanach.
  4. Ansin cuireann sé chuig istio-teiliméadracht é ag baint úsáide as iarratas Tuairisce.
  5. Socraíonn istio-teiliméadracht cé acu ar cheart an Tuarascáil seo a chur chuig na hinnill, chucu agus cé na sonraí ar cheart a sheoladh.
  6. Seolann Istio-teiliméadracht sonraí Report chuig an inneall más gá.

Anois, déanaimis a fheiceáil conas Istio a imscaradh sa chóras, nach bhfuil ann ach na príomhchodanna (toscaire píolótach agus taobhcharr).

Ar dtús, déanaimis féachaint ar an bpríomhchumraíocht (mogalra) a léann Pilot:

apiVersion: v1
kind: ConfigMap
metadata:
  name: istio
  namespace: istio-system
  labels:
    app: istio
    service: istio
data:
  mesh: |-

    # пока что не включаем отправку tracing информации (pilot настроит envoy’и таким образом, что отправка не будет происходить)
    enableTracing: false

    # пока что не указываем mixer endpoint’ы, чтобы sidecar контейнеры не отправляли информацию туда
    #mixerCheckServer: istio-policy.istio-system:15004
    #mixerReportServer: istio-telemetry.istio-system:15004

    # ставим временной промежуток, с которым будет envoy переспрашивать Pilot (это для старой версии envoy proxy)
    rdsRefreshDelay: 5s

    # default конфигурация для envoy sidecar
    defaultConfig:
      # аналогично как rdsRefreshDelay
      discoveryRefreshDelay: 5s

      # оставляем по умолчанию (путь к конфигурации и бинарю envoy)
      configPath: "/etc/istio/proxy"
      binaryPath: "/usr/local/bin/envoy"

      # дефолтное имя запущенного sidecar контейнера (используется, например, в именах сервиса при отправке tracing span’ов)
      serviceCluster: istio-proxy

      # время, которое будет ждать envoy до того, как он принудительно завершит все установленные соединения
      drainDuration: 45s
      parentShutdownDuration: 1m0s

      # по умолчанию используются REDIRECT правила iptables. Можно изменить на TPROXY.
      #interceptionMode: REDIRECT

      # Порт, на котором будет запущена admin панель каждого sidecar контейнера (envoy)
      proxyAdminPort: 15000

      # адрес, по которому будут отправляться trace’ы по zipkin протоколу (в начале мы отключили саму отправку, поэтому это поле сейчас не будет использоваться)
      zipkinAddress: tracing-collector.tracing:9411

      # statsd адрес для отправки метрик envoy контейнеров (отключаем)
      # statsdUdpAddress: aggregator:8126

      # выключаем поддержку опции Mutual TLS
      controlPlaneAuthPolicy: NONE

      # адрес, на котором будет слушать istio-pilot для того, чтобы сообщать информацию о service discovery всем sidecar контейнерам
      discoveryAddress: istio-pilot.istio-system:15007

Beidh na príomhchodanna rialaithe go léir (eitleán rialaithe) lonnaithe sa chóras ainmspáis i Kubernetes.

Ar a laghad, ní gá dúinn ach Pilot a imscaradh. Chun seo a úsáid againn a leithéid de chumraíocht.

Agus déanfaimid taobhcharr insteallta an choimeádáin a chumrú de láimh.

Coimeádán init:

initContainers:
 - name: istio-init
   args:
   - -p
   - "15001"
   - -u
   - "1337"
   - -m
   - REDIRECT
   - -i
   - '*'
   - -b
   - '*'
   - -d
   - ""
   image: istio/proxy_init:1.0.0
   imagePullPolicy: IfNotPresent
   resources:
     limits:
       memory: 128Mi
   securityContext:
     capabilities:
       add:
       - NET_ADMIN

Agus taobhcharr:

       name: istio-proxy
       args:
         - "bash"
         - "-c"
         - |
           exec /usr/local/bin/pilot-agent proxy sidecar 
           --configPath 
           /etc/istio/proxy 
           --binaryPath 
           /usr/local/bin/envoy 
           --serviceCluster 
           service-name 
           --drainDuration 
           45s 
           --parentShutdownDuration 
           1m0s 
           --discoveryAddress 
           istio-pilot.istio-system:15007 
           --discoveryRefreshDelay 
           1s 
           --connectTimeout 
           10s 
           --proxyAdminPort 
           "15000" 
           --controlPlaneAuthPolicy 
           NONE
         env:
         - name: POD_NAME
           valueFrom:
             fieldRef:
               fieldPath: metadata.name
         - name: POD_NAMESPACE
           valueFrom:
             fieldRef:
               fieldPath: metadata.namespace
         - name: INSTANCE_IP
           valueFrom:
             fieldRef:
               fieldPath: status.podIP
         - name: ISTIO_META_POD_NAME
           valueFrom:
             fieldRef:
               fieldPath: metadata.name
         - name: ISTIO_META_INTERCEPTION_MODE
           value: REDIRECT
         image: istio/proxyv2:1.0.0
         imagePullPolicy: IfNotPresent
         resources:
           requests:
             cpu: 100m
             memory: 128Mi
           limits:
             memory: 2048Mi
         securityContext:
           privileged: false
           readOnlyRootFilesystem: true
           runAsUser: 1337
         volumeMounts:
         - mountPath: /etc/istio/proxy
           name: istio-envoy

Chun go dtosóidh gach rud go rathúil, ní mór duit Cuntas Seirbhíse, ClusterRole, ClusterRoleBinding, CRD for Pilot a chruthú, ar féidir na tuairiscí air a fháil anseo.

Mar thoradh air sin, ba cheart go gcuirfí tús go rathúil leis an tseirbhís ina gcuirimid taobhcharr isteach le toscaire, ba cheart go bhfaigheadh ​​sí gach fionnachtain ón treoirthionscadail agus próiseálfaimid iarratais.

Tá sé tábhachtach a thuiscint gur feidhmchláir gan stát iad na comhpháirteanna uile eitleáin rialaithe agus gur féidir iad a scála go cothrománach gan fadhbanna. Stóráiltear na sonraí go léir i etcd i bhfoirm tuairiscí saincheaptha ar acmhainní Kubernetes.

Chomh maith leis sin, tá an cumas ag Istio (fós turgnamhach) rith lasmuigh den bhraisle agus an cumas féachaint ar fhionnachtain seirbhíse agus fumble idir roinnt braislí Kubernetes. Is féidir leat tuilleadh a léamh faoi seo anseo.

Le haghaidh suiteáil il-chnuasach, bí ar an eolas faoi na teorainneacha seo a leanas:

  1. Caithfidh Pod CIDR agus CIDR Seirbhíse a bheith uathúil thar na braislí go léir agus níor cheart dóibh forluí a dhéanamh.
  2. Ní mór go mbeadh rochtain ar gach Pod CIDR ó aon Phodaí CIDR idir braislí.
  3. Caithfidh gach freastalaí Kubernetes API a bheith inrochtana dá chéile.

Seo an t-eolas tosaigh chun cabhrú leat tosú le Istio. Mar sin féin, tá go leor gaistí fós. Mar shampla, gnéithe a bhaineann le trácht seachtrach a ródú (lasmuigh den bhraisle), cur chuige maidir le taobhcharranna a dhífhabhtú, próifíliú a dhéanamh, meascthóir a bhunú agus inneall meascthóir saincheaptha a scríobh, meicníocht rianaithe a bhunú agus a oibriú ag baint úsáide as toscaire.
Déanfaimid é seo go léir a mheas sna foilseacháin seo a leanas. Cuir do chuid ceisteanna, déanfaidh mé iarracht iad a chlúdach.

Foinse: will.com

Add a comment