ఇస్టియో కోసం అప్లికేషన్‌ను సిద్ధం చేస్తోంది

ఇస్టియో కోసం అప్లికేషన్‌ను సిద్ధం చేస్తోంది

డిస్టియో అనేది పంపిణీ చేయబడిన అప్లికేషన్‌లను కనెక్ట్ చేయడానికి, భద్రపరచడానికి మరియు పర్యవేక్షించడానికి అనుకూలమైన సాధనం. Istio సాఫ్ట్‌వేర్‌ను స్కేల్‌లో అమలు చేయడానికి మరియు నిర్వహించడానికి వివిధ సాంకేతికతలను ఉపయోగిస్తుంది, ప్యాకేజీ అప్లికేషన్ కోడ్ మరియు విస్తరణ కోసం డిపెండెన్సీలకు కంటైనర్‌లు మరియు ఆ కంటైనర్‌లను నిర్వహించడానికి కుబెర్నెట్స్‌తో సహా. కాబట్టి, ఇస్టియోతో పని చేయడానికి, ఈ సాంకేతికతల ఆధారంగా బహుళ సేవలతో కూడిన అప్లికేషన్ ఎలా పనిచేస్తుందో మీరు తప్పక తెలుసుకోవాలి లేకుండా ఇస్టియో. ఈ సాధనాలు మరియు భావనలు మీకు ఇప్పటికే తెలిసి ఉంటే, ఈ ట్యుటోరియల్‌ని దాటవేయడానికి సంకోచించకండి మరియు నేరుగా విభాగానికి వెళ్లండి Google Kubernetes ఇంజిన్ (GKE)లో ఇస్టియోను ఇన్‌స్టాల్ చేస్తోంది లేదా పొడిగింపును ఇన్‌స్టాల్ చేయడం GKEపై ఇస్టియో.

ఇది దశల వారీ మార్గదర్శి, ఇక్కడ మేము సోర్స్ కోడ్ నుండి GKE కంటైనర్ వరకు మొత్తం ప్రక్రియ ద్వారా ఈ సాంకేతికతలను ఒక ఉదాహరణ ద్వారా మీకు ప్రాథమికంగా అర్థం చేసుకుంటాము. ఈ సాంకేతికతల శక్తిని ఇస్టియో ఎలా ప్రభావితం చేస్తుందో కూడా మీరు చూస్తారు. కంటైనర్లు, కుబెర్నెట్స్, సర్వీస్ మెష్‌లు లేదా ఇస్టియో గురించి మీకు ఏమీ తెలియదని ఇది ఊహిస్తుంది.

పనులు

ఈ ట్యుటోరియల్‌లో, మీరు ఈ క్రింది పనులను పూర్తి చేస్తారు:

  1. బహుళ సేవలతో సరళమైన హలో వరల్డ్ అప్లికేషన్‌ను నేర్చుకోవడం.
  2. సోర్స్ కోడ్ నుండి అప్లికేషన్‌ను అమలు చేయండి.
  3. అప్లికేషన్‌ను కంటైనర్‌లలో ప్యాక్ చేయడం.
  4. కుబెర్నెటీస్ క్లస్టర్‌ను సృష్టిస్తోంది.
  5. కంటైనర్‌లను క్లస్టర్‌లో అమర్చడం.

మీరు ప్రారంభించడానికి ముందు

Kubernetes ఇంజిన్ APIని ప్రారంభించడానికి సూచనలను అనుసరించండి:

  1. వెళ్ళండి కుబెర్నెటెస్ ఇంజిన్ పేజీ Google క్లౌడ్ ప్లాట్‌ఫారమ్ కన్సోల్‌లో.
  2. ప్రాజెక్ట్‌ను సృష్టించండి లేదా ఎంచుకోండి.
  3. API మరియు సంబంధిత సేవలు ప్రారంభించబడే వరకు వేచి ఉండండి. దీనికి కొన్ని నిమిషాలు పట్టవచ్చు.
  4. మీ Google క్లౌడ్ ప్లాట్‌ఫారమ్ ప్రాజెక్ట్ కోసం బిల్లింగ్ సెటప్ చేయబడిందని నిర్ధారించుకోండి. బిల్లింగ్‌ను ఎలా ప్రారంభించాలో తెలుసుకోండి.

ఈ ట్యుటోరియల్‌లో, మీరు వర్చువల్ మిషన్‌ను సిద్ధం చేసే క్లౌడ్ షెల్‌ను ఉపయోగించవచ్చు Google కంప్యూట్ ఇంజిన్‌లో g1-చిన్నది డెబియన్ ఆధారిత Linux లేదా Linux లేదా macOS కంప్యూటర్‌తో.

ఎంపిక A: క్లౌడ్ షెల్ ఉపయోగించడం

క్లౌడ్ షెల్ ఉపయోగించడం వల్ల కలిగే ప్రయోజనాలు:

  • పైథాన్ 2 మరియు పైథాన్ 3 అభివృద్ధి వాతావరణాలు (సహా virtualenv) పూర్తిగా కాన్ఫిగర్ చేయబడ్డాయి.
  • కమాండ్ లైన్ సాధనాలు gCloud, డాకర్, వెళ్ళండి и kubectl, మేము ఉపయోగించే ఇది ఇప్పటికే ఇన్‌స్టాల్ చేయబడింది.
  • మీరు ఎంచుకోవడానికి అనేకం ఉన్నాయి టెక్స్ట్ ఎడిటర్లు:
    1. కోడ్ ఎడిటర్, ఇది క్లౌడ్ షెల్ విండో ఎగువన సవరణ చిహ్నంతో తెరవబడుతుంది.
    2. Emacs, Vim లేదా Nano, ఇది క్లౌడ్ షెల్‌లోని కమాండ్ లైన్ నుండి తెరవబడుతుంది.

ఉపయోగించడానికి క్లౌడ్ షెల్:

  1. GCP కన్సోల్‌కి వెళ్లండి.
  2. బటన్ క్లిక్ చేయండి క్లౌడ్ షెల్‌ను సక్రియం చేయండి GCP కన్సోల్ విండో ఎగువన (క్లౌడ్ షెల్‌ను సక్రియం చేయండి).

ఇస్టియో కోసం అప్లికేషన్‌ను సిద్ధం చేస్తోంది

దిగువ భాగంలో GCP కన్సోల్ కమాండ్ లైన్‌తో క్లౌడ్ షెల్ సెషన్ కొత్త విండోలో తెరవబడుతుంది.

ఇస్టియో కోసం అప్లికేషన్‌ను సిద్ధం చేస్తోంది

ఎంపిక B: కమాండ్ లైన్ సాధనాలను స్థానికంగా ఉపయోగించడం

మీరు Linux లేదా macOS నడుస్తున్న కంప్యూటర్‌లో పని చేస్తుంటే, మీరు ఈ క్రింది భాగాలను కాన్ఫిగర్ చేసి, ఇన్‌స్టాల్ చేయాలి:

  1. అనుకూలీకరించండి పైథాన్ 3 మరియు పైథాన్ 2 అభివృద్ధి పర్యావరణం.

  2. క్లౌడ్ SDKని ఇన్‌స్టాల్ చేయండి కమాండ్ లైన్ సాధనంతో gCloud.

  3. ఇన్స్టాల్ kubectl - పని చేయడానికి కమాండ్ లైన్ సాధనం Kubernetes.

    gcloud components install kubectl

  4. ఇన్స్టాల్ డాకర్ కమ్యూనిటీ ఎడిషన్ (CE). మీరు కమాండ్ లైన్ సాధనాన్ని ఉపయోగిస్తారు డాకర్నమూనా అప్లికేషన్ కోసం కంటైనర్ చిత్రాలను రూపొందించడానికి.

  5. సాధనాన్ని ఇన్‌స్టాల్ చేయండి Git వెర్షన్ నియంత్రణGitHub నుండి నమూనా అప్లికేషన్‌ను పొందడానికి.

నమూనా కోడ్‌ని డౌన్‌లోడ్ చేయండి

  1. సోర్స్ కోడ్‌ను డౌన్‌లోడ్ చేయండి హలో సర్వర్:

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

  2. ఉదాహరణ కోడ్ డైరెక్టరీకి వెళ్లండి:

    cd istio-samples/sample-apps/helloserver

బహుళ సేవలతో అప్లికేషన్‌ను అన్వేషించడం

నమూనా అప్లికేషన్ పైథాన్‌లో వ్రాయబడింది మరియు ఉపయోగించి పరస్పర చర్య చేసే రెండు భాగాలను కలిగి ఉంటుంది REST:

  • సర్వర్: ఒక ముగింపు బిందువుతో సాధారణ సర్వర్ పొందండి, /, ఇది కన్సోల్‌కు "హలో వరల్డ్"ని ప్రింట్ చేస్తుంది.
  • లోడ్జెన్: ట్రాఫిక్‌ని పంపే స్క్రిప్ట్ సర్వర్, సెకనుకు కాన్ఫిగర్ చేయగల అభ్యర్థనల సంఖ్యతో.

ఇస్టియో కోసం అప్లికేషన్‌ను సిద్ధం చేస్తోంది

సోర్స్ కోడ్ నుండి అప్లికేషన్‌ను అమలు చేస్తోంది

నమూనా అప్లికేషన్‌ను అన్వేషించడానికి, దాన్ని క్లౌడ్ షెల్‌లో లేదా మీ కంప్యూటర్‌లో అమలు చేయండి.
1) కేటలాగ్‌లో istio-నమూనాలు/నమూనా-యాప్‌లు/helloserver పరుగు సర్వర్:

python3 server/server.py

ప్రారంభంలో సర్వర్ కింది ప్రదర్శించబడుతుంది:

INFO:root:Starting server...

2) అభ్యర్థనలను పంపడానికి మరొక టెర్మినల్ విండోను తెరవండి సర్వర్. మీరు క్లౌడ్ షెల్‌ని ఉపయోగిస్తుంటే, మరొక సెషన్‌ను తెరవడానికి యాడ్ ఐకాన్‌ని క్లిక్ చేయండి.
3) ఒక అభ్యర్థనను పంపండి సర్వర్:

curl http://localhost:8080

సర్వర్ సమాధానాలు:

Hello World!

4) మీరు నమూనా కోడ్‌ను డౌన్‌లోడ్ చేసిన డైరెక్టరీ నుండి, కలిగి ఉన్న డైరెక్టరీకి వెళ్లండి లోడ్జెన్:

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

5) కింది పర్యావరణ వేరియబుల్‌లను సృష్టించండి:

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

6) ప్రారంభించండి virtualenv:

virtualenv --python python3 env

7) వర్చువల్ వాతావరణాన్ని సక్రియం చేయండి:

source env/bin/activate

8) అవసరాలను సెట్ చేయండి లోడ్జెన్:

pip3 install -r requirements.txt

9) ప్రారంభించండి లోడ్జెన్:

python3 loadgen.py

ప్రారంభంలో లోడ్జెన్ కింది సందేశం వంటి వాటిని ప్రదర్శిస్తుంది:

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

మరొక టెర్మినల్ విండోలో సర్వర్ కన్సోల్‌కు క్రింది సందేశాలను అవుట్‌పుట్ చేస్తుంది:

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: */*

నెట్‌వర్కింగ్ దృక్కోణం నుండి, మొత్తం అప్లికేషన్ ఒకే హోస్ట్ (స్థానిక కంప్యూటర్ లేదా క్లౌడ్ షెల్ వర్చువల్ మెషీన్)పై నడుస్తుంది. అందువలన మీరు ఉపయోగించవచ్చు localhostఅభ్యర్థనలను పంపడానికి సర్వర్.
10) ఆపడానికి లోడ్జెన్ и సర్వర్, నమోదు చేయండి Ctrl-c ప్రతి టెర్మినల్ విండోలో.
11) టెర్మినల్ విండోలో లోడ్జెన్ వర్చువల్ పర్యావరణాన్ని నిష్క్రియం చేయండి:

deactivate

కంటైనర్‌లలో అప్లికేషన్‌ను ప్యాక్ చేయడం

GKEలో అప్లికేషన్‌ను అమలు చేయడానికి, మీరు నమూనా అప్లికేషన్ - ప్యాకేజీని ప్యాకేజీ చేయాలి సర్వర్ и లోడ్జెన్ - లో కంటైనర్లు. కంటైనర్ అనేది అప్లికేషన్‌ను దాని వాతావరణం నుండి వేరుచేయడానికి ప్యాకేజీ చేయడానికి ఒక మార్గం.

అప్లికేషన్‌ను కంటైనర్‌లో ప్యాక్ చేయడానికి, మీకు ఇది అవసరం Dockerfile. Dockerfile అప్లికేషన్ యొక్క సోర్స్ కోడ్ మరియు దాని డిపెండెన్సీలను రూపొందించడానికి ఆదేశాలను నిర్వచించే టెక్స్ట్ ఫైల్ డాకర్ చిత్రం. ఒకసారి నిర్మించబడిన తర్వాత, మీరు చిత్రాన్ని డాకర్ హబ్ లేదా వంటి కంటైనర్ రిజిస్ట్రీకి అప్‌లోడ్ చేస్తారు కంటైనర్ రిజిస్ట్రీ.

ఉదాహరణ ఇప్పటికే ఉంది Dockerfile కోసం సర్వర్ и లోడ్జెన్ చిత్రాలను సేకరించడానికి అవసరమైన అన్ని ఆదేశాలతో. క్రింద - Dockerfile కోసం సర్వర్:

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" ]

  • జట్టు పైథాన్ నుండి: 3-స్లిమ్ బేస్ లేటెస్ట్‌ని ఉపయోగించమని డాకర్‌కి చెబుతుంది పైథాన్ 3 చిత్రం ఒక బేస్ గా.
  • జట్టు కాపీ. . సోర్స్ ఫైల్‌లను ప్రస్తుత వర్కింగ్ డైరెక్టరీకి కాపీ చేస్తుంది (మా విషయంలో మాత్రమే server.py) కంటైనర్ యొక్క ఫైల్ సిస్టమ్‌కు.
  • ENTRYPOINT కంటైనర్‌ను ప్రారంభించడానికి ఉపయోగించే ఆదేశాన్ని నిర్వచిస్తుంది. మా విషయంలో, ఈ కమాండ్ మీరు అమలు చేయడానికి ఉపయోగించిన దానితో సమానంగా ఉంటుంది server.py సోర్స్ కోడ్ నుండి.
  • జట్టు బహిర్గతం అని సూచిస్తుంది సర్వర్ పోర్ట్ ద్వారా డేటా కోసం వేచి ఉంది 8080. ఈ బృందం కాదు పోర్టులను అందిస్తుంది. ఇది పోర్ట్‌ను తెరవడానికి అవసరమైన ఒక రకమైన డాక్యుమెంటేషన్ 8080 కంటైనర్ను ప్రారంభించినప్పుడు.

మీ అప్లికేషన్‌ను కంటెయినరైజ్ చేయడానికి సిద్ధమవుతోంది

1) కింది ఎన్విరాన్మెంట్ వేరియబుల్స్ సెట్ చేయండి. భర్తీ చేయండి PROJECT_ID మీ GCP ప్రాజెక్ట్ IDకి.

export PROJECT_ID="PROJECT_ID"

export GCR_REPO="preparing-istio"

విలువలను ఉపయోగించడం PROJECT_ID и GCR_REPO మీరు డాకర్ చిత్రాన్ని నిర్మించినప్పుడు దాన్ని ట్యాగ్ చేసి, దానిని ప్రైవేట్ కంటైనర్ రిజిస్ట్రీకి పుష్ చేస్తారు.

2) కమాండ్ లైన్ సాధనం కోసం డిఫాల్ట్ GCP ప్రాజెక్ట్‌ను సెట్ చేయండి gCloud.

gcloud config set project $PROJECT_ID

3) కమాండ్ లైన్ సాధనం కోసం డిఫాల్ట్ జోన్‌ను సెట్ చేయండి gCloud.

gcloud config set compute/zone us-central1-b

4) GCP ప్రాజెక్ట్‌లో కంటైనర్ రిజిస్ట్రీ సేవ ప్రారంభించబడిందని నిర్ధారించుకోండి.

gcloud services enable containerregistry.googleapis.com

కంటైనర్ సర్వర్

  1. ఉదాహరణ ఉన్న డైరెక్టరీకి వెళ్లండి సర్వర్:

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

  2. ఉపయోగించి చిత్రాన్ని సమీకరించండి Dockerfile మరియు మీరు ముందుగా నిర్వచించిన ఎన్విరాన్మెంట్ వేరియబుల్స్:

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

పరామితి -t డాకర్ ట్యాగ్‌ని సూచిస్తుంది. కంటైనర్‌ను అమలు చేస్తున్నప్పుడు మీరు ఉపయోగించే చిత్రం పేరు ఇది.

  1. కంటైనర్ రిజిస్ట్రీకి చిత్రాన్ని అప్‌లోడ్ చేయండి:
    docker push gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1

లోడ్జెన్ యొక్క కంటెయినరైజేషన్

1) ఉదాహరణ ఉన్న డైరెక్టరీకి వెళ్లండి లోడ్జెన్:

cd ../loadgen

2) చిత్రాన్ని సేకరించండి:

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

3) చిత్రాన్ని కంటైనర్ రిజిస్ట్రీకి అప్‌లోడ్ చేయండి:

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

చిత్రాల జాబితాను వీక్షించండి

రిపోజిటరీలోని చిత్రాల జాబితాను సమీక్షించండి మరియు చిత్రాలు అప్‌లోడ్ చేయబడిందని ధృవీకరించండి:

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

కమాండ్ కొత్తగా అప్‌లోడ్ చేయబడిన చిత్రాల పేర్లను ప్రదర్శిస్తుంది:

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

GKE క్లస్టర్‌ను సృష్టిస్తోంది.

ఈ కంటైనర్‌లను క్లౌడ్ షెల్ వర్చువల్ మెషీన్‌లో లేదా కమాండ్‌తో కంప్యూటర్‌లో అమలు చేయవచ్చు డాకర్ రన్. కానీ ఉత్పత్తి వాతావరణంలో, కంటైనర్లను కేంద్రీయంగా ఆర్కెస్ట్రేట్ చేయడానికి మీకు ఒక మార్గం అవసరం. ఉదాహరణకు, కంటైనర్‌లు ఎల్లప్పుడూ రన్ అవుతున్నాయని నిర్ధారించుకునే సిస్టమ్ మీకు అవసరం మరియు ట్రాఫిక్ పెరిగితే అదనపు కంటైనర్ ఇన్‌స్టాన్స్‌లను స్కేల్ అప్ చేయడానికి మరియు స్పిన్ అప్ చేయడానికి మీకు ఒక మార్గం అవసరం.

కంటెయినరైజ్డ్ అప్లికేషన్‌లను అమలు చేయడానికి మీరు ఉపయోగించవచ్చు జి.కె.ఇ.. GKE అనేది కంటెయినర్ ఆర్కెస్ట్రేషన్ ప్లాట్‌ఫారమ్, ఇది వర్చువల్ మిషన్‌లను క్లస్టర్‌గా కలుపుతుంది. ప్రతి వర్చువల్ మిషన్‌ను నోడ్ అంటారు. GKE క్లస్టర్‌లు ఓపెన్ సోర్స్ Kubernetes క్లస్టర్ మేనేజ్‌మెంట్ సిస్టమ్‌పై ఆధారపడి ఉంటాయి. కుబెర్నెటెస్ క్లస్టర్‌తో పరస్పర చర్య చేయడానికి మెకానిజమ్‌లను అందిస్తుంది.

GKE క్లస్టర్‌ను సృష్టిస్తోంది:

1) క్లస్టర్‌ను సృష్టించండి:

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

జట్టు gCloud మీరు పేర్కొన్న GCP ప్రాజెక్ట్ మరియు డిఫాల్ట్ జోన్‌లో istioready క్లస్టర్‌ను సృష్టిస్తుంది. Istioని అమలు చేయడానికి, కనీసం 4 నోడ్‌లు మరియు వర్చువల్ మిషన్‌ను కలిగి ఉండాలని మేము సిఫార్సు చేస్తున్నాము n1-ప్రామాణిక-2.

బృందం కొన్ని నిమిషాల్లో క్లస్టర్‌ను సృష్టిస్తుంది. క్లస్టర్ సిద్ధంగా ఉన్నప్పుడు, కమాండ్ ఇలాగే అవుట్‌పుట్ చేస్తుంది сообщение.

2) కమాండ్ లైన్ సాధనంలో ఆధారాలను అందించండి kubectlక్లస్టర్‌ని నిర్వహించడానికి దీన్ని ఉపయోగించడానికి:

gcloud container clusters get-credentials istioready

3) ఇప్పుడు మీరు Kubernetes ద్వారా కమ్యూనికేట్ చేయవచ్చు kubectl. ఉదాహరణకు, కింది ఆదేశం నోడ్‌ల స్థితిని కనుగొనగలదు:

kubectl get nodes

కమాండ్ నోడ్‌ల జాబితాను ఉత్పత్తి చేస్తుంది:

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

కుబెర్నెట్స్ కీ కాన్సెప్ట్స్

రేఖాచిత్రం GKEలో ఒక అప్లికేషన్‌ను చూపుతుంది:

ఇస్టియో కోసం అప్లికేషన్‌ను సిద్ధం చేస్తోంది

మీరు GKEలో కంటైనర్‌లను అమర్చడానికి ముందు, Kubernetes యొక్క ముఖ్య భావనలను తెలుసుకోండి. మీరు మరింత తెలుసుకోవాలనుకుంటే చివరిలో లింక్‌లు ఉన్నాయి.

  • నోడ్స్ మరియు క్లస్టర్లు. GKEలో, నోడ్ అనేది వర్చువల్ మెషీన్. ఇతర కుబెర్నెట్స్ ప్లాట్‌ఫారమ్‌లలో, నోడ్ కంప్యూటర్ లేదా వర్చువల్ మెషీన్ కావచ్చు. క్లస్టర్ అనేది నోడ్‌ల సమాహారం, ఇది మీరు కంటెయినరైజ్డ్ అప్లికేషన్‌ను అమలు చేసే ఒకే యూనిట్‌గా పరిగణించబడుతుంది.
  • పాడ్స్. కుబెర్నెటీస్‌లో, కంటైనర్లు పాడ్‌లలో నడుస్తాయి. కుబెర్నెటెస్‌లోని పాడ్ ఒక విడదీయరాని యూనిట్. పాడ్ ఒకటి లేదా అంతకంటే ఎక్కువ కంటైనర్‌లను కలిగి ఉంటుంది. మీరు సర్వర్ కంటైనర్‌లను అమలు చేస్తారు మరియు లోడ్జెన్ ప్రత్యేక పాడ్లలో. పాడ్‌లో అనేక కంటైనర్‌లు ఉన్నప్పుడు (ఉదాహరణకు, అప్లికేషన్ సర్వర్ మరియు ప్రాక్సీ సర్వర్), కంటైనర్‌లు ఒకే సంస్థగా నిర్వహించబడతాయి మరియు పాడ్ వనరులను పంచుకుంటాయి.
  • విస్తరణలు. కుబెర్నెటెస్‌లో, విస్తరణ అనేది ఒకేలా ఉండే పాడ్‌ల సమాహారం. విస్తరణ క్లస్టర్ నోడ్‌లలో పంపిణీ చేయబడిన పాడ్‌ల బహుళ ప్రతిరూపాలను ప్రారంభించింది. విస్తరణ విఫలమైన లేదా స్పందించని పాడ్‌లను స్వయంచాలకంగా భర్తీ చేస్తుంది.
  • కుబెర్నెట్స్ సేవ. GKEలో అప్లికేషన్ కోడ్‌ని అమలు చేస్తున్నప్పుడు, మధ్య కనెక్షన్ లోడ్జెన్ и సర్వర్. మీరు క్లౌడ్ షెల్ వర్చువల్ మెషీన్ లేదా డెస్క్‌టాప్‌లో సేవలను ప్రారంభించినప్పుడు, మీరు వీరికి అభ్యర్థనలను పంపారు సర్వర్ వద్ద localhost: 8080. GKEకి విస్తరించిన తర్వాత, అందుబాటులో ఉన్న నోడ్‌లలో పాడ్‌లు అమలు చేయబడతాయి. డిఫాల్ట్‌గా, పాడ్ ఏ నోడ్‌లో నడుస్తుందో దానిపై మీకు నియంత్రణ ఉండదు, కాబట్టి మీరు ప్యాడ్లు శాశ్వత IP చిరునామాలు లేవు.
    కోసం IP చిరునామాను పొందేందుకు సర్వర్, మీరు పాడ్‌ల పైన నెట్‌వర్క్ సంగ్రహణను నిర్వచించాలి. అది ఏమిటి కుబెర్నెట్స్ సేవ. కుబెర్నెటెస్ సేవ పాడ్‌ల సెట్ కోసం నిరంతర ముగింపు బిందువును అందిస్తుంది. కొన్ని ఉన్నాయి సేవల రకాలు. సర్వర్ ఉపయోగాలు లోడ్ బ్యాలన్సర్, ఇది సంప్రదించడానికి బాహ్య IP చిరునామాను అందిస్తుంది సర్వర్ క్లస్టర్ వెలుపల నుండి.
    కుబెర్నెటెస్ DNS పేర్లను కేటాయించే అంతర్నిర్మిత DNS వ్యవస్థను కూడా కలిగి ఉంది (ఉదాహరణకు, helloserver.default.cluster.local) సేవలు. దీనికి ధన్యవాదాలు, క్లస్టర్‌లోని పాడ్‌లు శాశ్వత చిరునామాలో క్లస్టర్‌లోని ఇతర పాడ్‌లతో కమ్యూనికేట్ చేస్తాయి. క్లౌడ్ షెల్‌లో లేదా కంప్యూటర్‌లో వంటి క్లస్టర్ వెలుపల DNS పేరు ఉపయోగించబడదు.

కుబెర్నెటెస్ మానిఫెస్ట్

మీరు సోర్స్ నుండి అప్లికేషన్‌ను అమలు చేసినప్పుడు, మీరు అత్యవసర ఆదేశాన్ని ఉపయోగించారు python3

server.py

అత్యవసరం అనేది ఒక క్రియను సూచిస్తుంది: "దీన్ని చేయండి."

Kubernetes ఉపయోగిస్తుంది డిక్లరేటివ్ మోడల్. దీని అర్థం మేము కుబెర్నెట్‌లకు ఏమి చేయాలో ఖచ్చితంగా చెప్పడం లేదు, కానీ కావలసిన స్థితిని వివరిస్తాము. ఉదాహరణకు, సిస్టమ్ యొక్క వాస్తవ స్థితి కావలసిన స్థితికి సరిపోలుతుందని నిర్ధారించుకోవడానికి కుబెర్నెటెస్ పాడ్‌లను ప్రారంభించి, ఆపివేస్తుంది.

మీరు మానిఫెస్ట్‌లు లేదా ఫైల్‌లలో కావలసిన స్థితిని సూచిస్తారు యమ్ఎల్. YAML ఫైల్ ఒకటి లేదా అంతకంటే ఎక్కువ కుబెర్నెట్స్ ఆబ్జెక్ట్‌ల కోసం స్పెసిఫికేషన్‌లను కలిగి ఉంటుంది.

ఉదాహరణ కోసం YAML ఫైల్ ఉంది సర్వర్ и లోడ్జెన్. ప్రతి 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

  • రకం వస్తువు యొక్క రకాన్ని సూచిస్తుంది.
  • మెటాడేటా.పేరు విస్తరణ పేరును నిర్దేశిస్తుంది.
  • మొదటి ఫీల్డ్ స్పెక్ కావలసిన స్థితి యొక్క వివరణను కలిగి ఉంటుంది.
  • స్పెక్.ప్రతిరూపాలు కావలసిన పాడ్‌ల సంఖ్యను సూచిస్తుంది.
  • విభాగం స్పెక్.టెంప్లేట్ పాడ్ టెంప్లేట్‌ను నిర్వచిస్తుంది. పాడ్ స్పెసిఫికేషన్‌లో ఫీల్డ్ ఉంది చిత్రం, ఇది కంటైనర్ రిజిస్ట్రీ నుండి సంగ్రహించవలసిన చిత్రం పేరును నిర్దేశిస్తుంది.

సేవ క్రింది విధంగా నిర్వచించబడింది:

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

  • లోడ్ బ్యాలన్సర్: క్లయింట్లు లోడ్ బ్యాలెన్సర్ యొక్క IP చిరునామాకు అభ్యర్థనలను పంపుతారు, ఇది స్థిరమైన IP చిరునామాను కలిగి ఉంటుంది మరియు క్లస్టర్ వెలుపలి నుండి అందుబాటులో ఉంటుంది.
  • టార్గెట్ పోర్ట్: మీకు గుర్తున్నట్లుగా, జట్టు EXPOSE 8080 в Dockerfile పోర్టులను అందించలేదు. మీరు పోర్ట్ అందించండి 8080తద్వారా మీరు కంటైనర్‌ను సంప్రదించవచ్చు సర్వర్ క్లస్టర్ వెలుపల. మా విషయంలో hellosvc.default.cluster.local:80 (చిన్న పేరు: hellosvc) పోర్టుకు అనుగుణంగా ఉంటుంది 8080 పాడ్ IP చిరునామాలు హలో సర్వర్.
  • పోర్ట్: ఇది క్లస్టర్‌లోని ఇతర సేవలు అభ్యర్థనలను పంపే పోర్ట్ నంబర్.

loadgen.yaml

విస్తరణ వస్తువు loadgen.yaml లాగా ఉంటుంది సర్వర్.యామల్. వ్యత్యాసం ఏమిటంటే విస్తరణ వస్తువు ఒక విభాగాన్ని కలిగి ఉంటుంది ENV. ఇది అవసరమైన పర్యావరణ వేరియబుల్స్‌ను నిర్వచిస్తుంది లోడ్జెన్ మరియు మీరు సోర్స్ నుండి అప్లికేషన్‌ను రన్ చేస్తున్నప్పుడు ఇన్‌స్టాల్ చేసారు.

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

ఒకసారి లోడ్జెన్ ఫీల్డ్ కోసం ఇన్‌కమింగ్ అభ్యర్థనలను అంగీకరించదు రకం తెలియని ClusterIP. ఈ రకం క్లస్టర్‌లోని సేవలు ఉపయోగించగల నిరంతర IP చిరునామాను అందిస్తుంది, అయితే ఈ IP చిరునామా బాహ్య క్లయింట్‌లకు బహిర్గతం కాదు.

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

GKEలో కంటైనర్‌లను అమర్చడం

1) ఉదాహరణ ఉన్న డైరెక్టరీకి వెళ్లండి సర్వర్:

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

2) తెరవండి సర్వర్.యామల్ టెక్స్ట్ ఎడిటర్‌లో.
3) ఫీల్డ్‌లో పేరును భర్తీ చేయండి చిత్రం మీ డాకర్ చిత్రం పేరుకు.

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

భర్తీ చేయండి PROJECT_ID మీ GCP ప్రాజెక్ట్ IDకి.
4) సేవ్ చేసి మూసివేయండి సర్వర్.యామల్.
5) YAML ఫైల్‌ను కుబెర్నెట్స్‌కు అమలు చేయండి:

kubectl apply -f server.yaml

విజయవంతంగా పూర్తయిన తర్వాత, ఆదేశం కింది కోడ్‌ను ఉత్పత్తి చేస్తుంది:

deployment.apps/helloserver created
service/hellosvc created

6) డైరెక్టరీకి వెళ్లండి లోడ్జెన్:

cd ../loadgen

7) తెరవండి loadgen.yaml టెక్స్ట్ ఎడిటర్‌లో.
8) ఫీల్డ్‌లో పేరును భర్తీ చేయండి చిత్రం మీ డాకర్ చిత్రం పేరుకు.

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

భర్తీ చేయండి PROJECT_ID మీ GCP ప్రాజెక్ట్ IDకి.
9) సేవ్ చేసి మూసివేయండి loadgen.yaml, టెక్స్ట్ ఎడిటర్‌ను మూసివేయండి.
10) YAML ఫైల్‌ను కుబెర్నెట్స్‌కు అమలు చేయండి:

kubectl apply -f loadgen.yaml

విజయవంతంగా పూర్తయిన తర్వాత, ఆదేశం కింది కోడ్‌ను ఉత్పత్తి చేస్తుంది:

deployment.apps/loadgenerator created
service/loadgensvc created

11) పాడ్‌ల స్థితిని తనిఖీ చేయండి:

kubectl get pods

కమాండ్ స్థితిని చూపుతుంది:

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

12) పాడ్ నుండి అప్లికేషన్ లాగ్‌లను సంగ్రహించండి లోడ్జెన్. భర్తీ చేయండి POD_ID మునుపటి సమాధానం నుండి ఐడెంటిఫైయర్‌కు.

kubectl logs loadgenerator-POD_ID

13) బాహ్య IP చిరునామాలను పొందండి hellosvc:

kubectl get service

కమాండ్ ప్రతిస్పందన ఇలా కనిపిస్తుంది:

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) ఒక అభ్యర్థనను పంపండి hellosvc: భర్తీ EXTERNAL_IP బాహ్య IP చిరునామాకు hellosvc.

curl http://EXTERNAL_IP

ఇస్టియోను తీసుకుందాం

మీరు ఇప్పటికే GKEకి అప్లికేషన్‌ని కలిగి ఉన్నారు. లోడ్జెన్ Kubernetes DNS ఉపయోగించవచ్చు (hellosvc:80) అభ్యర్థనలను పంపడానికి సర్వర్మరియు మీరు అభ్యర్థనలను పంపవచ్చు సర్వర్ బాహ్య IP చిరునామా ద్వారా. Kubernetes అనేక లక్షణాలను కలిగి ఉన్నప్పటికీ, సేవల గురించి కొంత సమాచారం లేదు:

  • సేవలు ఎలా పరస్పర చర్య చేస్తాయి? సేవల మధ్య సంబంధాలు ఏమిటి? సేవల మధ్య ట్రాఫిక్ ఎలా ప్రవహిస్తుంది? అది మీకు తెలుసా లోడ్జెన్ కు అభ్యర్థనలను పంపుతుంది సర్వర్, కానీ మీకు అప్లికేషన్ గురించి ఏమీ తెలియదని ఊహించుకోండి. ఈ ప్రశ్నలకు సమాధానమివ్వడానికి, GKEలో నడుస్తున్న పాడ్‌ల జాబితాను చూద్దాం.
  • కొలమానాలు. ఎంతసేపు సర్వర్ ఇన్‌కమింగ్ అభ్యర్థనకు ప్రతిస్పందిస్తుందా? సెకనుకు ఎన్ని అభ్యర్థనలు సర్వర్ ద్వారా స్వీకరించబడ్డాయి? ఇది దోష సందేశాలను ఇస్తుందా?
  • భద్రతా సమాచారం. మధ్య ట్రాఫిక్ లోడ్జెన్ и సర్వర్ కేవలం గుండా వెళుతుంది HTTP లేదా ద్వారా mTLS?

ఈ ప్రశ్నలన్నింటికీ ఇస్టియో సమాధానమిస్తుంది. దీన్ని చేయడానికి, ఇస్టియో సైడ్‌కార్ ప్రాక్సీని ఉంచుతుంది ఎన్వే ప్రతి పాడ్ లో. ఎన్వాయ్ ప్రాక్సీ అప్లికేషన్ కంటైనర్‌లకు ఇన్‌కమింగ్ మరియు అవుట్‌గోయింగ్ ట్రాఫిక్‌ను అడ్డుకుంటుంది. దాని అర్థం ఏమిటంటే సర్వర్ и లోడ్జెన్ సైడ్‌కార్ ప్రాక్సీ ఎన్వాయ్ ద్వారా మరియు మొత్తం ట్రాఫిక్ ద్వారా స్వీకరించండి లోడ్జెన్ к సర్వర్ ఎన్వోయ్ ప్రాక్సీ ద్వారా వెళుతుంది.

ఎన్వోయ్ ప్రాక్సీల మధ్య కనెక్షన్‌లు సర్వీస్ మెష్‌ను ఏర్పరుస్తాయి. సర్వీస్ మెష్ ఆర్కిటెక్చర్ కుబెర్నెటెస్ పైన నియంత్రణ పొరను అందిస్తుంది.

ఇస్టియో కోసం అప్లికేషన్‌ను సిద్ధం చేస్తోంది

ఎన్వోయ్ ప్రాక్సీలు వారి స్వంత కంటైనర్‌లలో రన్ అవుతాయి కాబట్టి, అప్లికేషన్ కోడ్‌లో దాదాపు ఎటువంటి మార్పులు లేకుండానే GKE క్లస్టర్ పైన ఇస్టియోను ఇన్‌స్టాల్ చేయవచ్చు. కానీ మీరు మీ అప్లికేషన్‌ని ఇస్టియో ద్వారా నిర్వహించేలా చేయడానికి కొంత పని చేసారు:

  • అన్ని కంటైనర్లకు సేవలు. విస్తరణలకు సర్వర్ и లోడ్జెన్ కుబెర్నెట్స్ సేవతో ముడిపడి ఉంది. కూడా లోడ్జెన్, ఇది ఇన్‌కమింగ్ అభ్యర్థనలను స్వీకరించదు, ఒక సేవ ఉంది.
  • సేవల్లోని పోర్టులకు తప్పనిసరిగా పేర్లు ఉండాలి. GKEలో సర్వీస్ పోర్ట్‌లు పేరు లేకుండా వదిలివేయబడినప్పటికీ, Istioకి మీరు పేర్కొనవలసి ఉంటుంది పోర్ట్ పేరు అతని ప్రోటోకాల్ ప్రకారం. YAML ఫైల్‌లో పోర్ట్ కోసం సర్వర్ అని పిలుస్తారు httpఎందుకంటే సర్వర్ ప్రోటోకాల్‌ను ఉపయోగిస్తుంది HTTP. ఉంటే సేవ ఉపయోగించబడిన GRPC, మీరు పోర్ట్‌కు పేరు పెడతారు grpc.
  • విస్తరణలు ఫ్లాగ్ చేయబడ్డాయి. అందువల్ల, మీరు అదే సేవ యొక్క సంస్కరణల మధ్య ట్రాఫిక్‌ను విభజించడం వంటి Istio యొక్క ట్రాఫిక్ నిర్వహణ లక్షణాలను ఉపయోగించవచ్చు.

ఇస్టియోను ఇన్‌స్టాల్ చేస్తోంది

ఇస్టియోను ఇన్‌స్టాల్ చేయడానికి రెండు మార్గాలు ఉన్నాయి. చెయ్యవచ్చు GKE పొడిగింపుపై Istioని ప్రారంభించండి లేదా Istio యొక్క ఓపెన్ సోర్స్ వెర్షన్‌ను ఇన్‌స్టాల్ చేయండి క్లస్టర్ మీద. GKEలో ఇస్టియోతో, మీరు GKE క్లస్టర్ జీవితచక్రం అంతటా ఇస్టియో ఇన్‌స్టాలేషన్‌లు మరియు అప్‌గ్రేడ్‌లను సులభంగా నిర్వహించవచ్చు. మీకు Istio యొక్క తాజా వెర్షన్ లేదా మీ Istio కంట్రోల్ ప్యానెల్ కాన్ఫిగరేషన్‌పై మరింత నియంత్రణ కావాలంటే, GKE ఎక్స్‌టెన్షన్‌లో Istioకి బదులుగా ఓపెన్ సోర్స్ వెర్షన్‌ను ఇన్‌స్టాల్ చేయండి. విధానాన్ని నిర్ణయించడానికి, కథనాన్ని చదవండి నాకు GKEలో ఇస్టియో అవసరమా?.

మీ క్లస్టర్‌లో ఇస్టియోను ఇన్‌స్టాల్ చేయడానికి ఒక ఎంపికను ఎంచుకోండి, తగిన మార్గదర్శిని సమీక్షించండి మరియు సూచనలను అనుసరించండి. మీరు కొత్తగా అమలు చేసిన అప్లికేషన్‌తో Istioని ఉపయోగించాలనుకుంటే, సైడ్‌కార్ అమలును ప్రారంభించండి నేమ్‌స్పేస్ కోసం డిఫాల్ట్.

శుభ్రపరచడం

మీరు ఈ ట్యుటోరియల్‌లో ఉపయోగించిన వనరుల కోసం మీ Google క్లౌడ్ ప్లాట్‌ఫారమ్ ఖాతాకు ఛార్జ్ చేయబడకుండా ఉండటానికి, మీరు Istioని ఇన్‌స్టాల్ చేసి, నమూనా అప్లికేషన్‌తో ఆడిన తర్వాత కంటైనర్ క్లస్టర్‌ను తొలగించండి. ఇది కంప్యూట్ ఉదంతాలు, డిస్క్‌లు మరియు నెట్‌వర్క్ వనరులు వంటి అన్ని క్లస్టర్ వనరులను తీసివేస్తుంది.

తరువాత ఏమిటి?

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి