Kuvan viite: https://unsplash.com/photos/lCGfT4xYaEc

Kuinka luoda Kubernetes-klusteri AWS: llä muutamassa minuutissa

Kubernetesin asentaminen AWS: ään

Amazon Web Services (AWS) esitteli äskettäin hallitun Kubernetes-palvelun nimeltään EKS. Siitä huolimatta se on edelleen esikatselutilassa. Siksi Kubernetes voidaan tällä hetkellä asentaa AWS: ään, kuten Kubernetesin dokumentaatiossa selitetään joko käyttämällä muunnosta, Kubernetes Operations (kops), CoreOS Tectonic tai kube-aws. Näistä vaihtoehdoista havaitsin, että kops on erittäin helppo käyttää ja on suunniteltu hienosti asennuksen mukauttamiseen, päivitysten suorittamiseen ja Kubernetes-klusterien hallintaan ajan kuluessa. Tässä artikkelissa selitän kuinka Kubernetes-operaatiotyökalua voi käyttää Kubernetes-klusterin asentamiseen AWS: ään muutamassa minuutissa.

Seuraavat vaiheet

  1. Ensin tarvitsemme AWS-tilin ja käyttöavaimet aloittamiseksi. Kirjaudu AWS-konsoliisi ja luo käyttäjän avaimet käyttäjälle siirtymällä Käyttäjät / Suojaustiedot -sivulle.

2. Asenna AWS CLI noudattamalla sen virallista asennusopasta:

# OSX käyttämällä Homebrew-ohjelmaa
hauduta asentaa awscli
# Linux
pip install awscli --upgrade --käyttäjä
# awscli-versio: 1.6.5

3. Asenna kops noudattamalla sen virallista asennusopasta:

# OSX käyttämällä Homebrew-ohjelmaa
hauduta asentaa kops
# Linux
curl -LO https://github.com/kubernetes/kops/releases/download/$(curl -s https://api.github.com/repos/kubernetes/kops/releases/latest | grep tag_name | cut -d '' '-f 4) / kops-linux-amd64
chmod + x kops-linux-amd64
sudo mv kops-linux-amd64 / usr / local / bin / kops
# kops-versio: 1.9.0

4. Luo uusi IAM-käyttäjä tai käytä olemassa olevaa IAM-käyttäjää ja myönnä seuraavat oikeudet:

AmazonEC2FullAccess
AmazonRoute53FullAccess
AmazonS3FullAccess
AmazonVPCFullAccess

5. Määritä AWS-CLI tarjoamalla käyttöavain, salainen käyttöavain ja AWS-alue, jonka haluat Kubernetes-klusterin asentavan:

aws määrittää
AWS-käyttöavaintunnus [ei mitään]: AccessKeyValue
AWS-salainen käyttöavain [ei mitään]: SecretAccessKeyValue
Oletusalueen nimi [Ei mitään]: us-east-1
Oletusulostulomuoto [Ei mitään]:

6. Luo AWS S3 -kauha kops-tilan jatkamiseksi:

bucket_name = imesh-Kops-state-store
aws s3api luo-ämpäri \
--bucket $ {bucket_name} \
- alue meitä itään-1

7. Ota yllä olevan S3-kauhan versiointi käyttöön:

aws s3api put-bucket-versioning --bucket $ {bucket_name} --versioning-configuration Status = käytössä

8. Anna nimi Kubernetes-klusterille ja aseta S3-Bucket URL seuraaviin ympäristömuuttujiin:

vie KOPS_CLUSTER_NAME = imesh.k8s.local
vie KOPS_STATE_STORE = s3: // $ {bucket_name}

Lisää yllä oleva koodilohko voidaan lisätä ~ / .bash_profile- tai ~ / .profile-tiedostoon käyttöjärjestelmästä riippuen, jotta ne olisivat käytettävissä kaikissa pääteympäristöissä.

9. Luo Kubernetes-klusterimääritelmä käyttämällä kopsia antamalla tarvittava solmujen lukumäärä, solmun koko ja AWS-vyöhykkeet. Solmun koko tai pikemminkin EC2-ilmentymän tyyppi olisi päätettävä sen työtaakan mukaan, jota aiot ajaa Kubernetes-klusterissa:

kops luoda klusterin \
- solmumäärä = 2 \
- node-size = t2.medium \
- vyöhykkeet = us-itä-1a \
--name = $ {KOPS_CLUSTER_NAME}

Jos näet todennusongelmia, yritä asettaa seuraavat ympäristömuuttujat, jotta kops voi lukea suoraan EC2-käyttöoikeustiedot käyttämättä AWS CLI: tä:

vie AWS_ACCESS_KEY = AccessKeyValue
vie AWS_SECRET_KEY = SecretAccessKeyValue

Suorita tarvittaessa kops luo klusterin ohje -komento löytääksesi lisää parametreja:

kops luo klusterin - apua

10. Tarkista Kubernetes-klusterin määritelmä suorittamalla alla oleva komento:

kops muokkaus klusteri - nimi $ {KOPS_CLUSTER_NAME}

11. Nyt luodaan Kubernetes-klusteri AWS: ssä suorittamalla kops update -komento:

kops update cluster --name $ {KOPS_CLUSTER_NAME} --yes

12. Yllä oleva komento voi viedä jonkin aikaa vaadittavien infrastruktuuriresurssien luomiseen AWS: lle. Suorita vahvistuskomento tarkistaaksesi sen tilan ja odota, kunnes ryppä valmistuu:

kops validoi klusterin
Klusterin käyttäminen kubectl-kontekstista: imesh.k8s.local
Klusterin validointi imesh.k8s.local
INSTANCE-RYHMÄT
NIMI ROLLIKONEEN TYYPPI MIN MAX SUBNETIT
master-us-east-1a Master m3.medium 1 1 us-east-1a
solmut Solmu m4.xlarge 2 2 us-east-1a
NODE STATUS
NIMI ROLELI VALMIS
ip-172-20-48-50.ec2.sisäinen solmu Totta
ip-172-20-50-191.ec2.sisäinen solmu Totta
ip-172-20-55-27.ec2.sisäinen mestari Totta
Ryhmäsi imesh.k8s.local on valmis

Kun yllä oleva prosessi on valmis, kops määrittää Kubernetes CLI: n (kubectl) Kubernetes-klusterin API-päätepisteen ja käyttäjän valtuustiedoilla.

13. Nyt sinun on ehkä otettava käyttöön Kubernetes-kojetaulu päästäksesi klusteriin sen verkkopohjaisen käyttöliittymän kautta:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recomunded/kubernetes-dashboard.yaml

14. Suorita alla oleva komento löytääksesi järjestelmänvalvojan salasana:

kops get secrets kube --tyyppinen salaisuus -oplateksti

15. Suorita alla oleva komento löytääksesi Kubernetes-isäntänimen:

kubectl-klusteritiedot
Kubernetes-mestari on käynnissä osoitteessa https: // api-imesh-k8s-local-  .us-east-1.elb.amazonaws.com
KubeDNS on käynnissä osoitteessa https: // api-imesh-k8s-local-  .us-itä-1.elb.amazonaws.com / api / v1 / nimitilat / kube-järjestelmä / palvelut / kube-dns: dNS / proxy

16. Pääset Kubernetes-kojelautaan seuraavalla URL-osoitteella:

https: //  / ui

Anna käyttäjätunnus järjestelmänvalvojana ja yllä saatu salasana vaiheessa 14 selaimen kirjautumissivulla:

Suorita alla oleva komento löytääksesi järjestelmänvalvojan tilitunnus. Huomaa, että tässä käytetty salainen nimi eroaa edellisestä:

kops saa salaisuuksia admin --tyyppinen salaisuus -oplateksti

Anna yllä oleva palvelutili-tunnus palvelusäteilypyynnösivulle:

Viitteet:

[1] Kubernetes-avaimet käteen -ratkaisut, Kubernetes-dokumentaatio: https://kubernetes.io/docs/getting-started-guides/aws/

[2] Kubernetes-operaatioiden dokumentaatio: https://github.com/kubernetes/kops/tree/master/docs

[3] AWS: n hallinnoima Kubernetes-palvelu: https://aws.amazon.com/eks/

[4] AWS-esiintymätyypit: https://aws.amazon.com/ec2/instance-types/