Paratoi cais ar gyfer Istio

Paratoi cais ar gyfer Istio

Mae Istio yn offeryn cyfleus ar gyfer cysylltu, sicrhau a monitro cymwysiadau dosbarthedig. Mae Istio yn defnyddio amrywiaeth o dechnolegau i redeg a rheoli meddalwedd ar raddfa fawr, gan gynnwys cynwysyddion i becynnu cod cymhwysiad a dibyniaethau i'w defnyddio, a Kubernetes i reoli'r cynwysyddion hynny. Felly, i weithio gydag Istio rhaid i chi wybod sut mae cymhwysiad gyda gwasanaethau lluosog yn seiliedig ar y technolegau hyn yn gweithio без Istio. Os yw'r offer a'r cysyniadau hyn eisoes yn gyfarwydd i chi, mae croeso i chi hepgor y tiwtorial hwn a mynd yn syth i'r adran Gosod Istio ar Google Kubernetes Engine (GKE) neu osod estyniad Istio ar GKE.

Mae hwn yn ganllaw cam wrth gam lle byddwn yn cerdded trwy'r broses gyfan o'r cod ffynhonnell i gynhwysydd GKE i roi dealltwriaeth sylfaenol i chi o'r technolegau hyn trwy enghraifft. Byddwch hefyd yn gweld sut mae Istio yn trosoli pŵer y technolegau hyn. Mae hyn yn cymryd yn ganiataol nad ydych chi'n gwybod dim am gynwysyddion, Kubernetes, rhwyllau gwasanaeth, neu Istio.

tasgau

Yn y tiwtorial hwn, byddwch yn cwblhau'r tasgau canlynol:

  1. Dysgu cymhwysiad byd helo syml gyda gwasanaethau lluosog.
  2. Rhedeg y cais o'r cod ffynhonnell.
  3. Pecynnu'r cais mewn cynwysyddion.
  4. Creu clwstwr Kubernetes.
  5. Gosod cynwysyddion i glwstwr.

Cyn i chi ddechrau

Dilynwch y cyfarwyddiadau i alluogi Kubernetes Engine API:

  1. Ewch i Tudalen Peiriant Kubernetes yn y consol Google Cloud Platform.
  2. Creu neu ddewis prosiect.
  3. Arhoswch nes bod yr API a gwasanaethau cysylltiedig wedi'u galluogi. Gall hyn gymryd ychydig funudau.
  4. Sicrhewch fod bilio wedi'i osod ar gyfer eich prosiect Google Cloud Platform. Dysgwch sut i alluogi bilio.

Yn y tiwtorial hwn, gallwch ddefnyddio Cloud Shell, sy'n paratoi'r peiriant rhithwir g1-bach yn Google Compute Engine gyda Linux seiliedig ar Debian, neu gyfrifiadur Linux neu macOS.

Opsiwn A: Defnyddio Cloud Shell

Manteision defnyddio Cloud Shell:

  • Amgylcheddau datblygu Python 2 a Python 3 (gan gynnwys virtualenv) wedi'u ffurfweddu'n llawn.
  • Offer Llinell Reoli cloud, docwr, git и ciwctl, y byddwn yn eu defnyddio eisoes wedi'u gosod.
  • Mae gennych sawl un i ddewis ohonynt golygyddion testun:
    1. Golygydd cod, sy'n agor gyda'r eicon golygu ar frig ffenestr Cloud Shell.
    2. Emacs, Vim neu Nano, sy'n agor o'r llinell orchymyn yn Cloud Shell.

I Defnyddio Cragen Cwmwl:

  1. Ewch i'r consol GCP.
  2. y wasg Ysgogi Cloud Shell (Activate Cloud Shell) ar frig ffenestr consol GCP.

Paratoi cais ar gyfer Istio

Yn y rhan isaf Consol GCP Bydd sesiwn Cloud Shell gyda llinell orchymyn yn agor mewn ffenestr newydd.

Paratoi cais ar gyfer Istio

Opsiwn B: Defnyddio Offer Llinell Reoli yn Lleol

Os byddwch chi'n gweithio ar gyfrifiadur sy'n rhedeg Linux neu macOS, bydd angen i chi ffurfweddu a gosod y cydrannau canlynol:

  1. Addasu Amgylchedd datblygu Python 3 a Python 2.

  2. Gosod Cloud SDK gydag offeryn llinell orchymyn cloud.

  3. Gosod ciwctl - offeryn llinell orchymyn ar gyfer gweithio ag ef Kubernetes.

    gcloud components install kubectl

  4. Gosod Rhifyn Cymunedol Docker (CE). Byddwch yn defnyddio'r offeryn llinell orchymyn docwri greu delweddau cynhwysydd ar gyfer y cais sampl.

  5. Gosodwch yr offeryn Rheolaeth fersiwn Giti gael y cais sampl gan GitHub.

Lawrlwythwch cod sampl

  1. Lawrlwythwch y cod ffynhonnell hellweinydd:

    git clone https://github.com/GoogleCloudPlatform/istio-samples

  2. Ewch i'r cyfeiriadur cod enghreifftiol:

    cd istio-samples/sample-apps/helloserver

Archwilio rhaglen gyda gwasanaethau lluosog

Mae'r cymhwysiad sampl wedi'i ysgrifennu yn Python ac mae'n cynnwys dwy gydran sy'n rhyngweithio gan ddefnyddio REST:

  • gweinydd: gweinydd syml gydag un diweddbwynt CAEL, /, sy'n argraffu "helo byd" i'r consol.
  • llwythgen: sgript sy'n anfon traffig i gweinydd, gyda nifer ffurfweddadwy o geisiadau yr eiliad.

Paratoi cais ar gyfer Istio

Rhedeg cais o god ffynhonnell

I archwilio'r cymhwysiad sampl, rhedwch ef yn Cloud Shell neu ar eich cyfrifiadur.
1) Yn y catalog istio-samples/sampl-apps/helloserver rhedeg gweinydd:

python3 server/server.py

Ar y cychwyn gweinydd arddangosir y canlynol:

INFO:root:Starting server...

2) Agorwch ffenestr derfynell arall i anfon ceisiadau ati gweinydd. Os ydych chi'n defnyddio Cloud Shell, cliciwch ar yr eicon ychwanegu i agor sesiwn arall.
3) Anfonwch gais i gweinydd:

curl http://localhost:8080

gweinydd yn ateb:

Hello World!

4) O'r cyfeiriadur lle gwnaethoch chi lawrlwytho'r cod sampl, ewch i'r cyfeiriadur sy'n cynnwys llwythgen:

cd YOUR_WORKING_DIRECTORY/istio-samples/sample-apps/helloserver/loadgen

5) Creu'r newidynnau amgylchedd canlynol:

export SERVER_ADDR=http://localhost:8080
export REQUESTS_PER_SECOND=5

6) Lansio virtualenv:

virtualenv --python python3 env

7) Ysgogi'r amgylchedd rhithwir:

source env/bin/activate

8) gosod gofynion ar gyfer llwythgen:

pip3 install -r requirements.txt

9) Lansio llwythgen:

python3 loadgen.py

Ar y cychwyn llwythgen yn dangos rhywbeth fel y neges ganlynol:

Starting loadgen: 2019-05-20 10:44:12.448415
5 request(s) complete to http://localhost:8080

Mewn ffenestr derfynell arall gweinydd yn allbynnu'r negeseuon canlynol i'r consol:

127.0.0.1 - - [21/Jun/2019 14:22:01] "GET / HTTP/1.1" 200 -
INFO:root:GET request,
Path: /
Headers:
Host: localhost:8080
User-Agent: python-requests/2.22.0
Accept-Encoding: gzip, deflate
Accept: */*

O safbwynt rhwydweithio, mae'r rhaglen gyfan yn rhedeg ar un gwesteiwr (cyfrifiadur lleol neu beiriant rhithwir Cloud Shell). Felly gallwch chi ddefnyddio localhosti anfon ceisiadau i gweinydd.
10) I stopio llwythgen и gweinydd, nodwch Ctrl-c ym mhob ffenestr derfynell.
11) Yn y ffenestr derfynell llwythgen dadactifadu'r amgylchedd rhithwir:

deactivate

Pecynnu cais mewn cynwysyddion

I redeg y cais ar GKE, mae angen i chi becynnu'r cymhwysiad sampl − gweinydd и llwythgen - yn Cynhwyswyr. Mae cynhwysydd yn ffordd o becynnu cais i'w ynysu o'i amgylchedd.

I becynnu cais i mewn i gynhwysydd, mae angen Dockerfile. Dockerfile yn ffeil testun sy'n diffinio gorchmynion ar gyfer adeiladu cod ffynhonnell y rhaglen a'i ddibyniaethau i mewn Delwedd docwr. Ar ôl ei adeiladu, rydych chi'n uwchlwytho'r ddelwedd i gofrestrfa cynhwysydd fel Docker Hub neu Cofrestrfa Cynhwysydd.

Mae gan yr enghraifft eisoes Dockerfile gyfer gweinydd и llwythgen gyda'r holl orchmynion angenrheidiol i gasglu delweddau. Isod - Dockerfile gyfer gweinydd:

FROM python:3-slim as base
FROM base as builder
RUN apt-get -qq update 
    && apt-get install -y --no-install-recommends 
        g++ 
    && rm -rf /var/lib/apt/lists/*

# Enable unbuffered logging
FROM base as final
ENV PYTHONUNBUFFERED=1

RUN apt-get -qq update 
    && apt-get install -y --no-install-recommends 
        wget

WORKDIR /helloserver

# Grab packages from builder
COPY --from=builder /usr/local/lib/python3.7/ /usr/local/lib/python3.7/

# Add the application
COPY . .

EXPOSE 8080
ENTRYPOINT [ "python", "server.py" ]

  • Tîm O python: 3-fain fel sylfaen yn dweud wrth Docker i ddefnyddio'r diweddaraf Delwedd Python 3 fel sylfaen.
  • Tîm COPI. . copïo'r ffeiliau ffynhonnell i'r cyfeiriadur gweithio cyfredol (yn ein hachos ni yn unig gweinydd.py) i system ffeiliau'r cynhwysydd.
  • MYNEDIAD yn diffinio'r gorchymyn a ddefnyddir i gychwyn y cynhwysydd. Yn ein hachos ni, mae'r gorchymyn hwn bron yr un fath â'r un yr oeddech chi'n arfer ei redeg gweinydd.py o'r cod ffynhonnell.
  • Tîm YMOSODIAD yn nodi hynny gweinydd yn aros am ddata trwy'r porthladd 8080. Nid yw'r tîm hwn yn darparu porthladdoedd. Mae hyn yn rhyw fath o ddogfennaeth sydd ei angen i agor y porthladd 8080 wrth gychwyn y cynhwysydd.

Paratoi i amwys eich cais

1) Gosodwch y newidynnau amgylchedd canlynol. Amnewid PROJECT_ID i'ch ID prosiect GCP.

export PROJECT_ID="PROJECT_ID"

export GCR_REPO="preparing-istio"

Defnyddio gwerthoedd PROJECT_ID и GCR_REPO rydych chi'n tagio delwedd y Docker pan fyddwch chi'n ei hadeiladu ac yn ei gwthio i Gofrestrfa Cynhwyswyr preifat.

2) Gosodwch y prosiect GCP rhagosodedig ar gyfer yr offeryn llinell orchymyn cloud.

gcloud config set project $PROJECT_ID

3) Gosodwch y parth rhagosodedig ar gyfer yr offeryn llinell orchymyn cloud.

gcloud config set compute/zone us-central1-b

4) Sicrhewch fod y gwasanaeth Cofrestrfa Cynhwyswyr wedi'i alluogi yn y prosiect GCP.

gcloud services enable containerregistry.googleapis.com

Gweinydd containerization

  1. Ewch i'r cyfeiriadur lle mae'r enghraifft wedi'i lleoli gweinydd:

    cd YOUR_WORKING_DIRECTORY/istio-samples/sample-apps/helloserver/server/

  2. Cydosod y ddelwedd gan ddefnyddio Dockerfile a'r newidynnau amgylchedd a ddiffiniwyd gennych yn gynharach:

    docker build -t gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1 .

Paramedr -t yn cynrychioli'r tag Docker. Dyma enw'r ddelwedd a ddefnyddiwch wrth osod y cynhwysydd.

  1. Llwythwch y ddelwedd i'r Gofrestrfa Cynhwyswyr:
    docker push gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1

Containerization o loadgen

1) Ewch i'r cyfeiriadur lle mae'r enghraifft wedi'i lleoli llwythgen:

cd ../loadgen

2) Casglwch y ddelwedd:

docker build -t gcr.io/$PROJECT_ID/$GCR_REPO/loadgen:v0.0.1 .

3) Llwythwch y ddelwedd i'r Gofrestrfa Cynhwyswyr:

docker push gcr.io/$PROJECT_ID/$GCR_REPO/loadgen:v0.0.1

Gweld rhestr o ddelweddau

Adolygwch y rhestr o ddelweddau yn y gadwrfa a gwiriwch fod y delweddau wedi'u huwchlwytho:

gcloud container images list --repository gcr.io/$PROJECT_ID/preparing-istio

Mae'r gorchymyn yn dangos enwau'r delweddau sydd newydd eu huwchlwytho:

NAME
gcr.io/PROJECT_ID/preparing-istio/helloserver
gcr.io/PROJECT_ID/preparing-istio/loadgen

Creu clwstwr GKE.

Gellid rhedeg y cynwysyddion hyn ar beiriant rhithwir Cloud Shell neu ar gyfrifiadur gyda'r gorchymyn docker rhedeg. Ond mewn amgylchedd cynhyrchu, mae angen ffordd arnoch i drefnu cynwysyddion yn ganolog. Er enghraifft, mae angen system arnoch sy'n sicrhau bod cynwysyddion bob amser yn rhedeg, ac mae angen ffordd arnoch i gynyddu ac ehangu achosion cynwysyddion ychwanegol os bydd traffig yn cynyddu.

I redeg cymwysiadau cynhwysydd y gallwch eu defnyddio Mae G.K.E.. Mae GKE yn blatfform cerddorfa cynhwysydd sy'n cydgrynhoi peiriannau rhithwir yn glwstwr. Gelwir pob peiriant rhithwir yn nod. Mae clystyrau GKE yn seiliedig ar system rheoli clwstwr ffynhonnell agored Kubernetes. Mae Kubernetes yn darparu mecanweithiau ar gyfer rhyngweithio â'r clwstwr.

Creu clwstwr GKE:

1) Creu clwstwr:

gcloud container clusters create istioready 
  --cluster-version latest 
  --machine-type=n1-standard-2 
  --num-nodes 4

Tîm cloud yn creu clwstwr istioready yn y prosiect GCP a'r parth rhagosodedig a nodwyd gennych. I redeg Istio, rydym yn argymell cael o leiaf 4 nod a pheiriant rhithwir n1-safon-2.

Mae'r tîm yn creu'r clwstwr mewn ychydig funudau. Pan fydd y clwstwr yn barod, mae'r gorchymyn yn allbynnu rhywbeth fel hyn сообщение.

2) Darparu tystlythyrau yn yr offeryn llinell orchymyn ciwctli'w ddefnyddio i reoli'r clwstwr:

gcloud container clusters get-credentials istioready

3) Nawr gallwch chi gyfathrebu â Kubernetes trwy ciwctl. Er enghraifft, gall y gorchymyn canlynol ddarganfod statws nodau:

kubectl get nodes

Mae'r gorchymyn yn cynhyrchu rhestr o nodau:

NAME                                       STATUS   ROLES    AGE    VERSION
gke-istoready-default-pool-dbeb23dc-1vg0   Ready    <none>   99s    v1.13.6-gke.13
gke-istoready-default-pool-dbeb23dc-36z5   Ready    <none>   100s   v1.13.6-gke.13
gke-istoready-default-pool-dbeb23dc-fj7s   Ready    <none>   99s    v1.13.6-gke.13
gke-istoready-default-pool-dbeb23dc-wbjw   Ready    <none>   99s    v1.13.6-gke.13

Cysyniadau Allweddol Kubernetes

Mae'r diagram yn dangos cymhwysiad ar GKE:

Paratoi cais ar gyfer Istio

Cyn i chi ddefnyddio cynwysyddion yn GKE, dysgwch gysyniadau allweddol Kubernetes. Mae yna ddolenni ar y diwedd os ydych chi eisiau dysgu mwy.

  • Nodau a chlystyrau. Yn GKE, peiriant rhithwir yw nod. Ar lwyfannau Kubernetes eraill, gall nod fod yn gyfrifiadur neu'n beiriant rhithwir. Mae clwstwr yn gasgliad o nodau y gellir eu hystyried yn uned sengl lle rydych chi'n defnyddio cymhwysiad mewn cynhwysydd.
  • Podiau. Yn Kubernetes, mae cynwysyddion yn rhedeg mewn codennau. Mae Pod yn Kubernetes yn uned anwahanadwy. Mae Pod yn dal un neu fwy o gynwysyddion. Rydych chi'n defnyddio cynwysyddion gweinydd a llwythgen mewn codennau ar wahân. Pan fo nifer o gynwysyddion mewn pod (er enghraifft, gweinydd cais a gweinydd dirprwyol), mae cynwysyddion yn cael eu rheoli fel un endid ac yn rhannu adnoddau pod.
  • Gosodiadau. Yn Kubernetes, mae gosodiad yn wrthrych sy'n gasgliad o godau union yr un fath. Mae'r defnydd yn lansio copïau lluosog o godennau wedi'u dosbarthu ar draws nodau clwstwr. Mae lleoli yn disodli codennau sydd wedi methu neu nad ydynt yn ymateb yn awtomatig.
  • gwasanaeth Kubernetes. Wrth redeg cod cais yn GKE, mae'r cysylltiad rhwng llwythgen и gweinydd. Pan ddechreuoch chi wasanaethau ar beiriant rhithwir neu fwrdd gwaith Cloud Shell, fe wnaethoch chi anfon ceisiadau at gweinydd yn localhost: 8080. Ar ôl eu defnyddio i GKE, mae codennau'n cael eu gweithredu ar y nodau sydd ar gael. Yn ddiofyn, nid oes gennych unrhyw reolaeth dros ba nod y mae'r pod yn rhedeg arno, felly chi codennau dim cyfeiriadau IP parhaol.
    I gael cyfeiriad IP ar gyfer gweinydd, mae angen ichi ddiffinio tyniad rhwydwaith ar ben y codennau. Dyna beth ydyw gwasanaeth Kubernetes. Mae gwasanaeth Kubernetes yn darparu pwynt terfyn parhaus ar gyfer set o godennau. Mae yna ychydig mathau o wasanaethau. gweinydd defnyddiau Llwyth Cydbwysydd, sy'n darparu cyfeiriad IP allanol i gysylltu ag ef gweinydd o'r tu allan i'r clwstwr.
    Mae gan Kubernetes hefyd system DNS adeiledig sy'n aseinio enwau DNS (er enghraifft, helloserver.default.clwstwr.lleol) gwasanaethau. Diolch i hyn, mae codennau o fewn y clwstwr yn cyfathrebu â chodau eraill yn y clwstwr mewn cyfeiriad parhaol. Ni ellir defnyddio'r enw DNS y tu allan i'r clwstwr, megis yn Cloud Shell neu ar gyfrifiadur.

Mae Kubernetes yn amlygu

Pan wnaethoch chi redeg y rhaglen o'r ffynhonnell, fe wnaethoch chi ddefnyddio'r gorchymyn hanfodol python3

gweinydd.py

Mae Imperative yn awgrymu berf: “gwnewch hyn.”

Kubernetes yn defnyddio model datganiadol. Mae hyn yn golygu nad ydym yn dweud wrth Kubernetes yn union beth i'w wneud, ond yn hytrach yn disgrifio'r cyflwr dymunol. Er enghraifft, mae Kubernetes yn cychwyn ac yn stopio codennau yn ôl yr angen i sicrhau bod cyflwr gwirioneddol y system yn cyfateb i'r cyflwr dymunol.

Rydych chi'n nodi'r cyflwr dymunol mewn maniffestau neu ffeiliau YAML. Mae ffeil YAML yn cynnwys manylebau ar gyfer un neu fwy o wrthrychau Kubernetes.

Mae'r enghraifft yn cynnwys ffeil YAML ar gyfer gweinydd и llwythgen. Mae pob ffeil YAML yn nodi cyflwr dymunol y gwrthrych lleoli a gwasanaeth Kubernetes.

gweinydd.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: helloserver
spec:
  selector:
    matchLabels:
      app: helloserver
  replicas: 1
  template:
    metadata:
      labels:
        app: helloserver
    spec:
      terminationGracePeriodSeconds: 5
      restartPolicy: Always
      containers:
      - name: main
        image: gcr.io/google-samples/istio/helloserver:v0.0.1
        imagePullPolicy: Always

  • fath yn dynodi math y gwrthrych.
  • metadata.name yn nodi enw'r defnydd.
  • Maes cyntaf spec yn cynnwys disgrifiad o'r cyflwr dymunol.
  • spec.replicas yn nodi'r nifer dymunol o godennau.
  • Adran sbec.templed yn diffinio templed pod. Mae maes ym manyleb y pod image, sy'n nodi enw'r ddelwedd y mae angen ei dynnu o'r Gofrestrfa Cynhwyswyr.

Diffinnir y gwasanaeth fel a ganlyn:

apiVersion: v1
kind: Service
metadata:
  name: hellosvc
spec:
  type: LoadBalancer
  selector:
    app: helloserver
  ports:
  - name: http
    port: 80
    targetPort: 8080

  • Llwyth Cydbwysydd: Mae cleientiaid yn anfon ceisiadau i gyfeiriad IP y cydbwysedd llwyth, sydd â chyfeiriad IP parhaus ac sy'n hygyrch o'r tu allan i'r clwstwr.
  • targedPort: fel y cofiwch, y tîm DATGUDDIAD 8080 в Dockerfile ni ddarparodd borthladdoedd. Chi sy'n darparu'r porthladd 8080fel y gallwch gysylltu â'r cynhwysydd gweinydd y tu allan i'r clwstwr. Yn ein hachos ni hellosvc.default.cluster.local:80 (enw byr: helosvc) yn cyfateb i'r porthladd 8080 Cyfeiriadau IP pod hellweinydd.
  • porthladd: Dyma'r rhif porthladd lle bydd gwasanaethau eraill yn y clwstwr yn anfon ceisiadau.

llwythgen.yaml

Defnydd yn gwrthwynebu llwythgen.yaml edrych fel gweinydd.yaml. Y gwahaniaeth yw bod y gwrthrych lleoli yn cynnwys adran env. Mae'n diffinio'r newidynnau amgylcheddol sydd eu hangen llwythgen ac a osodwyd gennych wrth redeg y rhaglen o'r ffynhonnell.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: loadgenerator
spec:
  selector:
    matchLabels:
      app: loadgenerator
  replicas: 1
  template:
    metadata:
      labels:
        app: loadgenerator
    spec:
      terminationGracePeriodSeconds: 5
      restartPolicy: Always
      containers:
      - name: main
        image: gcr.io/google-samples/istio/loadgen:v0.0.1
        imagePullPolicy: Always
        env:
        - name: SERVER_ADDR
          value: "http://hellosvc:80/"
        - name: REQUESTS_PER_SECOND
          value: "10"
        resources:
          requests:
            cpu: 300m
            memory: 256Mi
          limits:
            cpu: 500m
            memory: 512Mi

Unwaith llwythgen nid yw'n derbyn ceisiadau sy'n dod i mewn, ar gyfer y maes math wedi'i nodi ClwstwrIP. Mae'r math hwn yn darparu cyfeiriad IP parhaus y gall gwasanaethau yn y clwstwr ei ddefnyddio, ond nid yw'r cyfeiriad IP hwn yn agored i gleientiaid allanol.

apiVersion: v1
kind: Service
metadata:
  name: loadgensvc
spec:
  type: ClusterIP
  selector:
    app: loadgenerator
  ports:
  - name: http
    port: 80
    targetPort: 8080

Defnyddio Cynwysyddion yn GKE

1) Ewch i'r cyfeiriadur lle mae'r enghraifft wedi'i lleoli gweinydd:

cd YOUR_WORKING_DIRECTORY/istio-samples/sample-apps/helloserver/server/

2) Agored gweinydd.yaml mewn golygydd testun.
3) Amnewid yr enw yn y maes image i enw eich delwedd Docker.

image: gcr.io/PROJECT_ID/preparing-istio/helloserver:v0.0.1

Amnewid PROJECT_ID i'ch ID prosiect GCP.
4) Arbed a chau gweinydd.yaml.
5) Defnyddio'r ffeil YAML i Kubernetes:

kubectl apply -f server.yaml

Ar ôl ei gwblhau'n llwyddiannus, mae'r gorchymyn yn cynhyrchu'r cod canlynol:

deployment.apps/helloserver created
service/hellosvc created

6) Ewch i'r cyfeiriadur lle llwythgen:

cd ../loadgen

7) Agored llwythgen.yaml mewn golygydd testun.
8) Amnewid yr enw yn y maes image i enw eich delwedd Docker.

image: gcr.io/PROJECT_ID/preparing-istio/loadgenv0.0.1

Amnewid PROJECT_ID i'ch ID prosiect GCP.
9) Arbed a chau llwythgen.yaml, cau'r golygydd testun.
10) Defnyddio'r ffeil YAML i Kubernetes:

kubectl apply -f loadgen.yaml

Ar ôl ei gwblhau'n llwyddiannus, mae'r gorchymyn yn cynhyrchu'r cod canlynol:

deployment.apps/loadgenerator created
service/loadgensvc created

11) Gwiriwch statws y codennau:

kubectl get pods

Mae'r gorchymyn yn dangos y statws:

NAME                             READY   STATUS    RESTARTS   AGE
helloserver-69b9576d96-mwtcj     1/1     Running   0          58s
loadgenerator-774dbc46fb-gpbrz   1/1     Running   0          57s

12) Tynnwch logiau cais o'r pod llwythgen. Amnewid POD_ID i'r ID o'r ateb blaenorol.

kubectl logs loadgenerator-POD_ID

13) Cael cyfeiriadau IP allanol helosvc:

kubectl get service

Mae'r ymateb gorchymyn yn edrych fel hyn:

NAME         TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)        AGE
hellosvc     LoadBalancer   10.81.15.158   192.0.2.1       80:31127/TCP   33m
kubernetes   ClusterIP      10.81.0.1      <none>          443/TCP        93m
loadgensvc   ClusterIP      10.81.15.155   <none>          80/TCP         4m52s

14) Anfonwch gais i helosvc: disodli EXTERNAL_IP i gyfeiriad IP allanol helosvc.

curl http://EXTERNAL_IP

Gadewch i ni gymryd ar Istio

Mae gennych gais eisoes wedi'i ddefnyddio i GKE. llwythgen yn gallu defnyddio Kubernetes DNS (helo: 80) i anfon ceisiadau i gweinydda gallwch anfon ceisiadau i gweinydd gan gyfeiriad IP allanol. Er bod gan Kubernetes lawer o nodweddion, mae rhywfaint o wybodaeth ar goll am y gwasanaethau:

  • Sut mae gwasanaethau'n rhyngweithio? Beth yw'r berthynas rhwng gwasanaethau? Sut mae traffig yn llifo rhwng gwasanaethau? A ydych yn ymwybodol hynny llwythgen yn anfon ceisiadau i gweinydd, ond dychmygwch nad ydych chi'n gwybod dim am y cais. I ateb y cwestiynau hyn, gadewch i ni edrych ar y rhestr o godennau rhedeg yn GKE.
  • Metrigau. Pa mor hir gweinydd yn ymateb i gais sy'n dod i mewn? Sawl cais yr eiliad sy'n cael ei dderbyn gan y gweinydd? A yw'n rhoi negeseuon gwall?
  • Gwybodaeth Ddiogelwch. Traffig rhwng llwythgen и gweinydd dim ond yn mynd trwy HTTP neu gan mTLS?

Mae Istio yn ateb yr holl gwestiynau hyn. I wneud hyn, mae Istio yn gosod dirprwy car ochr Gennad ym mhob cod. Mae dirprwy'r Llysgennad yn rhyng-gipio'r holl draffig sy'n dod i mewn ac yn mynd allan i gynwysyddion cymwysiadau. Mae'n golygu hynny gweinydd и llwythgen derbyn trwy ddirprwy-gerbyd Cennad, a'r holl draffig o llwythgen к gweinydd yn mynd drwy'r dirprwy Envoy.

Mae cysylltiadau rhwng dirprwyon Llysgenhadon yn ffurfio rhwyll wasanaeth. Mae pensaernïaeth y rhwyll gwasanaeth yn darparu haen o reolaeth ar ben Kubernetes.

Paratoi cais ar gyfer Istio

Gan fod dirprwyon Envoy yn rhedeg yn eu cynwysyddion eu hunain, gellir gosod Istio ar ben clwstwr GKE heb fawr ddim newidiadau i god y cais. Ond rydych chi wedi gwneud rhywfaint o waith i gael eich cais yn barod i gael ei reoli gan Istio:

  • Gwasanaethau ar gyfer pob cynhwysydd. I leoliadau gweinydd и llwythgen yn gysylltiedig â gwasanaeth Kubernetes. Hyd yn oed llwythgen, nad yw'n derbyn ceisiadau sy'n dod i mewn, mae yna wasanaeth.
  • Rhaid i borthladdoedd mewn gwasanaethau gael enwau. Er y gellir gadael porthladdoedd gwasanaeth heb eu henwi yn GKE, mae Istio yn gofyn ichi nodi enw porthladd yn unol â'i brotocol. Yn y ffeil YAML mae'r porthladd ar gyfer gweinydd galwyd httpoherwydd bod y gweinydd yn defnyddio'r protocol HTTP. Os gwasanaeth defnyddio gRPC, byddech chi'n enwi'r porthladd grpc.
  • Mae gosodiadau'n cael eu nodi. Felly, gallwch ddefnyddio nodweddion rheoli traffig Istio, megis rhannu traffig rhwng fersiynau o'r un gwasanaeth.

Gosodiad

Mae dwy ffordd i osod Istio. Gall galluogi Istio ar estyniad GKE neu gosod y fersiwn ffynhonnell agored o Istio ar y clwstwr. Gydag Istio ar GKE, gallwch chi reoli gosodiadau ac uwchraddiadau Istio yn hawdd trwy gydol cylch oes clwstwr GKE. Os ydych chi eisiau'r fersiwn ddiweddaraf o Istio neu fwy o reolaeth dros eich cyfluniad panel rheoli Istio, gosodwch y fersiwn ffynhonnell agored yn lle'r estyniad Istio on GKE. I benderfynu ar y dull, darllenwch yr erthygl Oes angen Istio ar GKE arnaf?.

Dewiswch opsiwn, adolygwch y canllaw priodol, a dilynwch y cyfarwyddiadau i osod Istio ar eich clwstwr. Os ydych chi am ddefnyddio Istio gyda'ch cais sydd newydd ei ddefnyddio, galluogi gweithredu ceir ochr ar gyfer gofod enwau diofyn.

Glanhau

Er mwyn osgoi codi tâl ar eich cyfrif Google Cloud Platform am yr adnoddau a ddefnyddiwyd gennych yn y tiwtorial hwn, dilëwch y clwstwr cynwysyddion ar ôl i chi osod Istio a chwarae gyda'r rhaglen sampl. Bydd hyn yn cael gwared ar yr holl adnoddau clwstwr, megis enghreifftiau cyfrifo, disgiau, ac adnoddau rhwydwaith.

Beth sydd nesaf?

Ffynhonnell: hab.com

Ychwanegu sylw