Hauv qhov kev qhia no, koj tuaj yeem siv Cloud Plhaub, uas npaj lub tshuab virtual g1-me me hauv Google Compute Cav nrog Debian-based Linux, lossis Linux lossis macOS computer.
Los ntawm kev pom kev sib tham, tag nrho daim ntawv thov khiav ntawm ib tus tswv tsev (lub computer hauv zos lossis Cloud Shell virtual tshuab). Yog li koj tuaj yeem siv localhostxa cov lus thov rau neeg rau zaub mov.
10) nres loadgen ΠΈ neeg rau zaub mov, nkag Ctrl-c nyob rau hauv txhua lub qhov rais terminal.
11) Nyob rau hauv lub qhov rais terminal loadgen deactivate lub virtual ib puag ncig:
deactivate
Ntim ib daim ntawv thov hauv ntim
Txhawm rau khiav daim ntawv thov ntawm GKE, koj yuav tsum tau ntim cov qauv daim ntawv thov β neeg rau zaub mov ΠΈ loadgen - ntawm ntim. Lub thawv yog ib txoj hauv kev los ntim daim ntawv thov kom cais tawm ntawm nws ib puag ncig.
Txhawm rau ntim daim ntawv thov rau hauv lub thawv, koj xav tau Dockerfile. Dockerfile yog cov ntawv nyeem uas txhais cov lus txib rau kev tsim daim ntawv thov lub hauv paus code thiab nws cov dependencies rau hauv Docker duab. Thaum tsim tau, koj muab cov duab tso rau hauv lub thawv sau npe xws li Docker Hub lossis Container Registry.
Qhov piv txwv twb muaj Dockerfile rau neeg rau zaub mov ΠΈ loadgen nrog tag nrho cov lus txib tsim nyog los sau cov duab. Hauv qab no - Dockerfile rau neeg rau zaub mov:
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" ]
pab neeg Los ntawm python: 3-slim as base qhia Docker kom siv qhov tseeb Python 3 duab raws li lub hauv paus.
pab neeg COPY. . luam cov ntaub ntawv los ntawm cov ntaub ntawv ua haujlwm tam sim no (hauv peb rooj plaub nkaus xwb server.py) mus rau lub thawv ntim cov ntaub ntawv system.
ENTRYPOINT txhais cov lus txib uas siv los pib lub thawv. Hauv peb cov ntaub ntawv, cov lus txib no yuav luag zoo ib yam li qhov koj tau siv los khiav server.py los ntawm qhov chaws.
pab neeg EXPOSE qhia tias neeg rau zaub mov tos cov ntaub ntawv los ntawm qhov chaw nres nkoj 8080. Pab neeg no tsis yog muab cov chaw nres nkoj. Nov yog qee yam ntaub ntawv uas xav tau los qhib qhov chaw nres nkoj 8080 thaum pib lub thawv.
Npaj kom ntim koj daim ntawv thov
1) Teem cov kev hloov pauv ib puag ncig hauv qab no. Hloov PROJECT_ID rau koj tus GCP project ID.
export PROJECT_ID="PROJECT_ID"
export GCR_REPO="preparing-istio"
Siv tus nqi PROJECT_ID ΠΈ GCR_REPO koj tag cov duab Docker thaum koj tsim nws thiab thawb nws mus rau lub Thawv Registry ntiag tug.
2) Teem lub neej ntawd GCP project rau cov cuab yeej kab hais kom ua gcloud ua.
gcloud config set project $PROJECT_ID
3) Teem lub default zone rau cov kab hais kom ua gcloud ua.
gcloud config set compute/zone us-central1-b
4) Nco ntsoov tias qhov kev pabcuam Thawv Sau Npe tau qhib rau hauv GCP qhov project.
Nodes thiab pawg. Hauv GKE, qhov node yog lub tshuab virtual. Ntawm lwm lub Kubernetes platforms, ib lub pob tuaj yeem yog lub computer lossis lub tshuab virtual. Ib pawg yog ib pawg ntawm cov nodes uas tuaj yeem suav hais tias yog ib chav tsev uas koj siv cov ntawv thov ntim khoom.
Pods. Hauv Kubernetes, ntim tau khiav hauv cov pods. Lub Pod nyob rau hauv Kubernetes yog ib chav tsev indivisible. Lub Pod tuav ib lossis ntau lub thawv. Koj deploy server ntim thiab loadgen nyob rau hauv nyias nyias. Thaum muaj ntau lub ntim hauv ib lub plhaub (piv txwv li, daim ntawv thov server thiab proxy server), cov thawv ntim tau tswj hwm raws li ib qho chaw thiab sib faib cov peev txheej.
Kev xa tawm. Hauv Kubernetes, kev xa tawm yog ib yam khoom uas yog sau los ntawm cov pods zoo tib yam. Deployment launches ntau replicas ntawm pods faib nyob rau hauv pawg nodes. Kev xa tawm tau hloov pauv cov pods uas ua tsis tau lossis tsis teb.
Kubernetes kev pabcuam. Thaum khiav daim ntawv thov code hauv GKE, kev sib txuas ntawm loadgen ΠΈ neeg rau zaub mov. Thaum koj pib cov kev pabcuam ntawm Cloud Shell virtual tshuab lossis desktop, koj tau xa cov lus thov mus rau neeg rau zaub mov ntawm localhost: 8080. Thaum xa mus rau GKE, cov pods raug tua ntawm cov muaj. Los ntawm lub neej ntawd, koj tsis muaj kev tswj xyuas qhov twg ntawm lub plhaub taum ua haujlwm, yog li koj pods tsis muaj chaw nyob IP ruaj khov.
Kom tau txais tus IP chaw nyob rau neeg rau zaub mov, koj yuav tsum tau txhais lub network abstraction nyob rau sab saum toj ntawm cov pods. Qhov ntawd yog qhov nws yog Kubernetes kev pabcuam. Qhov kev pabcuam Kubernetes muab qhov kawg kawg rau ib pawg ntawm cov pods. Muaj ob peb tug hom kev pabcuam. neeg rau zaub mov siv LoadBalancer, uas muab qhov chaw nyob IP sab nraud los tiv tauj neeg rau zaub mov los ntawm sab nraud pawg.
Kubernetes kuj tseem muaj cov kab ke DNS built-in uas muab cov npe DNS (piv txwv li, helloserver.default.cluster.local) kev pabcuam. Ua tsaug rau qhov no, cov pods hauv pawg sib txuas lus nrog lwm cov pods hauv pawg ntawm qhov chaw nyob tas li. Lub npe DNS tsis tuaj yeem siv sab nraum pawg, xws li hauv Huab Plhaub lossis hauv computer.
Kubernetes manifests
Thaum koj khiav daim ntawv thov los ntawm qhov chaw, koj siv cov lus txib tseem ceeb python3
server.py
Imperative implies ib tug verb: "ua li no."
Kubernetes siv tus qauv tshaj tawm. Qhov no txhais tau hais tias peb tsis qhia Kubernetes raws nraim yuav ua li cas, tab sis piav qhia txog lub xeev xav tau. Piv txwv li, Kubernetes pib thiab nres cov pods raws li xav tau los ua kom lub xeev tiag tiag ntawm lub cev raws li lub xeev xav tau.
Koj qhia lub xeev xav tau hauv manifests lossis cov ntaub ntawv YAML. Ib cov ntaub ntawv YAML muaj cov lus qhia tshwj xeeb rau ib lossis ntau yam khoom Kubernetes.
spec.replicas qhia txog qhov xav tau ntawm cov pods.
Feem spec. template txhais tau ib lub pod template. Muaj ib daim teb nyob rau hauv pod specification duab, uas qhia lub npe ntawm cov duab uas yuav tsum tau muab rho tawm los ntawm Lub Thawv Registry.
Txij li thaum Envoy proxies khiav hauv lawv lub thawv, Istio tuaj yeem ntsia tau rau sab saum toj ntawm GKE pawg nrog yuav luag tsis muaj kev hloov pauv rau daim ntawv thov code. Tab sis koj tau ua qee yam haujlwm kom tau txais koj daim ntawv thov npaj los tswj los ntawm Istio:
Kev pabcuam rau txhua lub thawv. Rau kev xa tawm neeg rau zaub mov ΠΈ loadgen khi rau Kubernetes kev pabcuam. Txawm loadgen, uas tsis tau txais kev thov tuaj, muaj kev pabcuam.
Cov chaw nres nkoj hauv cov kev pabcuam yuav tsum muaj npe. Txawm hais tias cov chaw nres nkoj pabcuam tuaj yeem raug tso tseg tsis muaj npe hauv GKE, Istio xav kom koj qhia npe port raws li nws txoj cai. Hauv YAML cov ntaub ntawv qhov chaw nres nkoj rau neeg rau zaub mov hu ua Httpvim server siv raws tu qauv HTTP. Yog kev pab cuam siv GRPC, koj yuav npe lub chaw nres nkoj grpc ua.