Implementaţi un cluster Kubernetes cu CoreOS

De la Ro Ikoula wiki
Jump to navigation Jump to search

nl:Implementeer een cluster Kubernetes met CoreOS it:Distribuire un cluster Kubernetes con CoreOS pt:Implantar um cluster Kubernetes com CoreOS es:Implementar un clúster Kubernetes con CoreOS en:Deploy a cluster Kubernetes with CoreOS ru:Развертывание кластера Kubernetes с CoreOS pl:Wdróż klaster Kubernetes z CoreOS fr:Deployer un cluster Kubernetes avec CoreOS

Acest articol este rezultatul unei traduceri automate efectuate de către software-ul. Puteți vizualiza sursa articol aici.








Această procedură descrie modul de a disloca rapid şi pur şi simplu un cluster Kubernetes multi-noduri cu 3 cazurile CoreOS. Kubernetes de lucru în modul client - Serverul, clientul Kubernetes este numit "Kubernetes minion " şi server "Kubernetes maestru ". Instanta Kubernetes Master este instanta care va Orchestra central cazuri Kubernetes slujitorii. În exemplul nostru, o instanta CoreOS va juca rolul de maestru Kubernetes şi alte două cazuri va juca rolul de nod Kubernetes (minion).


Kubernetes este un sistem de sursă deschisă orchestraţie creat de Google pentru gestionarea aplicaţiei container cu Docker într-un cluster de gazde multiple (3 CoreOS VM în exemplul nostru ). Acesta permite implementarea, menţinerea şi scalabilitatea aplicatiilor. Pentru mai multe informaţii puteţi merge GitHub Kubernetes


Vom presupune că dumneavoastră 3 CoreOS cazuri sunt deja implementate, qu 'ele pot comunica între ele şi că sunteţi logat ssh cu nucleul de utilizator.


Dacă acest lucru nu este deja făcut, actualiza ţi cazuri CoreOS astfel încât acestea sunt cel puţin în versiunea CoreOS 653.0.0 şi includ DCE 2 (a se vedea noastre FAQ Actualizaţi manual CoreOS). În cazul nostru toate corpurile noastre sunt în CoreOS stabil 681.2.0.


$ cat /etc/lsb-release
DISTRIB_ID=CoreOS
DISTRIB_RELEASE=681.2.0
DISTRIB_CODENAME="Red Dog"
DISTRIB_DESCRIPTION="CoreOS 681.2.0"


De asemenea, trebuie să asigurăm că toate instanţele noastre CoreOS au un ID de maşini diferite pentru cluster de contextul bunei funcționări. Pur şi simplu ştergeţi fişierul /etc/machine-id şi reporniţi fiecare dintre dumneavoastră cazuri CoreOS fie :


$ sudo rm -f /etc/machine-id && sudo reboot


Configuraţia de exemplu Kubernetes Master :

Suprascrieţi fişierul nor - implicit config.yml a noastră Kubernetes maestru de configurare efectuând următoarele comenzi (numai pe instanta care va acţiona ca maestru şi în aceeaşi ordine decât mai jos ) :


core@Kube-MASTER ~ $ sudo wget -O /usr/share/oem/cloud-config.yml http://mirror02.ikoula.com/priv/coreos/kubernetes-master.yaml
--2015-06-22 15:55:48--  http://mirror02.ikoula.com/priv/coreos/kubernetes-master.yaml
Resolving mirror02.ikoula.com... 80.93.X.X, 2a00:c70:1:80:93:81:178:1
Connecting to mirror02.ikoula.com|80.93.X.X|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 8913 (8.7K) [text/plain]
Saving to: '/usr/share/oem/cloud-config.yml'

<!--T:11-->
/usr/share/oem/cloud-config.yml               100%[===================================================================================================>]   8.70K  --.-KB/s   in 0s

<!--T:12-->
2015-06-22 15:55:48 (148 MB/s) - '/usr/share/oem/cloud-config.yml' saved [8913/8913]


core@Kube-MASTER ~ $ export `cat /etc/environment`


core@Kube-MASTER ~ $ sudo sed -i 's#PRIVATE_IP#'$COREOS_PRIVATE_IPV4'#g' /usr/share/oem/cloud-config.yml


Am reporniţi instanţă noastre, astfel încât configuraţia sa este eficient :


core@Kube-MASTER ~ $ sudo reboot


Vom verifica că organismul nostru este corect iniţializat :


core@Kube-MASTER ~ $ sudo fleetctl list-machines
MACHINE         IP              METADATA
aee19a88...     10.1.1.138      role=master


core@Kube-MASTER ~ $ sudo etcdctl ls --recursive
/coreos.com
/coreos.com/updateengine
/coreos.com/updateengine/rebootlock
/coreos.com/updateengine/rebootlock/semaphore
/coreos.com/network
/coreos.com/network/config
/coreos.com/network/subnets
/coreos.com/network/subnets/10.244.69.0-24
/registry
/registry/ranges
/registry/ranges/serviceips
/registry/ranges/servicenodeports
/registry/namespaces
/registry/namespaces/default
/registry/services
/registry/services/endpoints
/registry/services/endpoints/default
/registry/services/endpoints/default/kubernetes
/registry/services/endpoints/default/kubernetes-ro
/registry/services/specs
/registry/services/specs/default
/registry/services/specs/default/kubernetes
/registry/services/specs/default/kubernetes-ro
/registry/serviceaccounts
/registry/serviceaccounts/default
/registry/serviceaccounts/default/default


Puteţi vedea, de asemenea, servicii /ascultă porturile (Există componente server /Master Kubernetes ):


core@Kube-MASTER ~ $ sudo netstat -taupen | grep LISTEN
tcp        0      0 10.1.1.138:7001         0.0.0.0:*               LISTEN      232        16319      634/etcd2
tcp        0      0 10.1.1.138:7080         0.0.0.0:*               LISTEN      0          19392      1047/kube-apiserver
tcp        0      0 0.0.0.0:5000            0.0.0.0:*               LISTEN      0          19142      973/python
tcp        0      0 127.0.0.1:10251         0.0.0.0:*               LISTEN      0          20047      1075/kube-scheduler
tcp        0      0 10.1.1.138:6443         0.0.0.0:*               LISTEN      0          19406      1047/kube-apiserver
tcp        0      0 0.0.0.0:5355            0.0.0.0:*               LISTEN      245        14794      502/systemd-resolve
tcp        0      0 127.0.0.1:10252         0.0.0.0:*               LISTEN      0          19653      1058/kube-controlle
tcp        0      0 10.1.1.138:2380         0.0.0.0:*               LISTEN      232        16313      634/etcd2
tcp6       0      0 :::8080                 :::*                    LISTEN      0          19390      1047/kube-apiserver
tcp6       0      0 :::22                   :::*                    LISTEN      0          13647      1/systemd
tcp6       0      0 :::4001                 :::*                    LISTEN      232        16321      634/etcd2
tcp6       0      0 :::2379                 :::*                    LISTEN      232        16320      634/etcd2
tcp6       0      0 :::5355                 :::*                    LISTEN      245        14796      502/systemd-resolve


Configurare de cazuri Kubernetes slujitorii :

Suprascrieţi fişierul nor - implicit config.yml nostru Kubernetes Minion Configuration efectuând următoarele comenzi pe toate dumneavoastră exemplu care va juca rolul de Kubernetes Minion (numai pe instanţe care va juca rolul nodul /minion şi în aceeaşi ordine decât mai jos ) :


core@Kube-MINION1 ~ $ sudo wget -O /usr/share/oem/cloud-config.yml http://mirror02.ikoula.com/priv/coreos/kubernetes-minion.yaml
--2015-06-22 16:39:26--  http://mirror02.ikoula.com/priv/coreos/kubernetes-minion.yaml
Resolving mirror02.ikoula.com... 80.93.X.X, 2a00:c70:1:80:93:81:178:1
Connecting to mirror02.ikoula.com|80.93.X.X|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 5210 (5.1K) [text/plain]
Saving to: '/usr/share/oem/cloud-config.yml'

<!--T:25-->
/usr/share/oem/cloud-config.yml               100%[===================================================================================================>]   5.09K  --.-KB/s   in 0s

<!--T:26-->
2015-06-22 16:39:26 (428 MB/s) - '/usr/share/oem/cloud-config.yml' saved [5210/5210]


core@Kube-MINION1 ~ $ export `cat /etc/environment`


Este necesar să se adapteze IP privat de ta kubernetes maestru instanţă în comanda de mai jos de precauţie (Înlocuiţi 10.1.1.138 de ip privat dumneavoastră kubernetes maestru instanţă ) comanda de mai jos :


core@Kube-MINION1 ~ $ sudo sed -i 's#MASTER_PRIVATE_IP#10.1.1.138#g' /usr/share/oem/cloud-config.yml


În cele din urmă o dată au efectuaţi aceste comenzi identic pe fiecare dintre dumneavoastră cazuri /noduri kubernetes minion, reporniţi-le astfel încât configuraţia lor sunt eficiente şi ceea ce se alăture cluster-ului.


core@Kube-MINION1 ~ $ sudo reboot


Verificăm că nostru 2 de asemenea, cazuri kubernetes minion s-au alăturat cluster nostru (următoarea comandă poate fi rulat pe orice membru al dumneavoastră exemplu clusterului ) :


core@Kube-MASTER ~ $ sudo fleetctl list-machines
MACHINE         IP              METADATA
5097f972...     10.1.1.215      role=node
aee19a88...     10.1.1.138      role=master
fe86214c...     10.1.1.83       role=node


core@Kube-MINION1 ~ $ sudo etcdctl ls --recursive
/coreos.com
/coreos.com/updateengine
/coreos.com/updateengine/rebootlock
/coreos.com/updateengine/rebootlock/semaphore
/coreos.com/network
/coreos.com/network/config
/coreos.com/network/subnets
/coreos.com/network/subnets/10.244.69.0-24
/coreos.com/network/subnets/10.244.38.0-24
/coreos.com/network/subnets/10.244.23.0-24
/registry
/registry/ranges
/registry/ranges/serviceips
/registry/ranges/servicenodeports
/registry/namespaces
/registry/namespaces/default
/registry/services
/registry/services/specs
/registry/services/specs/default
/registry/services/specs/default/kubernetes
/registry/services/specs/default/kubernetes-ro
/registry/services/endpoints
/registry/services/endpoints/default
/registry/services/endpoints/default/kubernetes
/registry/services/endpoints/default/kubernetes-ro
/registry/serviceaccounts
/registry/serviceaccounts/default
/registry/serviceaccounts/default/default
/registry/events
/registry/events/default
/registry/events/default/10.1.1.215.13ea16c9c70924f4
/registry/events/default/10.1.1.83.13ea16f74bd4de1c
/registry/events/default/10.1.1.83.13ea16f77a4e7ab2
/registry/events/default/10.1.1.215.13ea16c991a4ee57
/registry/minions
/registry/minions/10.1.1.215
/registry/minions/10.1.1.83


core@Kube-MINION2 ~ $ sudo etcdctl ls --recursive
/coreos.com
/coreos.com/updateengine
/coreos.com/updateengine/rebootlock
/coreos.com/updateengine/rebootlock/semaphore
/coreos.com/network
/coreos.com/network/config
/coreos.com/network/subnets
/coreos.com/network/subnets/10.244.69.0-24
/coreos.com/network/subnets/10.244.38.0-24
/coreos.com/network/subnets/10.244.23.0-24
/registry
/registry/ranges
/registry/ranges/serviceips
/registry/ranges/servicenodeports
/registry/namespaces
/registry/namespaces/default
/registry/services
/registry/services/specs
/registry/services/specs/default
/registry/services/specs/default/kubernetes
/registry/services/specs/default/kubernetes-ro
/registry/services/endpoints
/registry/services/endpoints/default
/registry/services/endpoints/default/kubernetes
/registry/services/endpoints/default/kubernetes-ro
/registry/serviceaccounts
/registry/serviceaccounts/default
/registry/serviceaccounts/default/default
/registry/events
/registry/events/default
/registry/events/default/10.1.1.83.13ea16f77a4e7ab2
/registry/events/default/10.1.1.215.13ea16c991a4ee57
/registry/events/default/10.1.1.215.13ea16c9c70924f4
/registry/events/default/10.1.1.83.13ea16f74bd4de1c
/registry/minions
/registry/minions/10.1.1.215
/registry/minions/10.1.1.83


Pe instanţe noastre Kubernetes Minion aici servicii /ascultă porturile (inclusiv serviciul Kubelet prin care se face schimbul de informații cu Kubernetes maestru ) :


core@Kube-MINION1 ~ $ sudo netstat -taupen | grep LISTEN
tcp        0      0 127.0.0.1:10249         0.0.0.0:*               LISTEN      0          18280      849/kube-proxy
tcp        0      0 0.0.0.0:5355            0.0.0.0:*               LISTEN      245        14843      500/systemd-resolve
tcp6       0      0 :::49005                :::*                    LISTEN      0          18284      849/kube-proxy
tcp6       0      0 :::10255                :::*                    LISTEN      0          19213      1025/kubelet
tcp6       0      0 :::47666                :::*                    LISTEN      0          18309      849/kube-proxy
tcp6       0      0 :::22                   :::*                    LISTEN      0          13669      1/systemd
tcp6       0      0 :::4001                 :::*                    LISTEN      232        16106      617/etcd2
tcp6       0      0 :::4194                 :::*                    LISTEN      0          19096      1025/kubelet
tcp6       0      0 :::10248                :::*                    LISTEN      0          19210      1025/kubelet
tcp6       0      0 :::10250                :::*                    LISTEN      0          19305      1025/kubelet
tcp6       0      0 :::2379                 :::*                    LISTEN      232        16105      617/etcd2
tcp6       0      0 :::5355                 :::*                    LISTEN      245        14845      500/systemd-resolve


Verificarea de comunicare cu Master Kubernetes API :

Kubernetes UI :

Pentru a accesa tabloul de bord Kubernetes, aveţi nevoie pentru a permite conexiuni pentru portul 8080 (Kubernetes master API server ) efectuate de un port, dacă este necesar expediere (transmite zona ) portul 8080 exemplu de maestru dumneavoastră Kubernetes. Apoi, pur şi simplu du-te la URL-ul http://adresse_ip_publique_instance_kubernetes_master:8080/static/app/#/dashboard/ în browser-ul dumneavoastră :


Kubernetes-UI.png


Din acest tablou de bord, sunteţi printre alte posibile pentru a afişa informaţii pe dumneavoastră noduri (Kubernetes Minion). Pentru aceasta, faceţi clic pe "Vedere " :


Kubernetes-UI-2.png


Faceţi clic pe "Noduri " :


Kubernetes-UI-3.png


Lista ta noduri Kubernetes minion apare :


Kubernetes-UI-4.png


Faceţi clic pe una dintre ele pentru a afişa informaţii despre acest nod (versiunea Docker, sistem, KubeProxy, şi Kubelet, etc. |) :


Kubernetes-UI-5.png


Kubernetes CLI :


Puteţi utiliza instrumentele Kubectl De exemplu maestru dumneavoastră Kubernetes. Pentru aceasta, trebuie să instalaţi acest utilitar, după cum urmează :


Odată conectat la ssh pe tipul Kubernetes exemplu de maestru următoarele comenzi :


core@Kube-MASTER ~ $ sudo wget -O /opt/bin/kubectl https://storage.googleapis.com/kubernetes-release/release/v0.17.0/bin/linux/amd64/kubectl
--2015-06-23 11:39:09--  https://storage.googleapis.com/kubernetes-release/release/v0.17.0/bin/linux/amd64/kubectl
Resolving storage.googleapis.com... 64.233.166.128, 2a00:1450:400c:c09::80
Connecting to storage.googleapis.com|64.233.166.128|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 20077224 (19M) [application/octet-stream]
Saving to: '/opt/bin/kubectl'

<!--T:54-->
/opt/bin/kubectl                              100%[===================================================================================================>]  19.15M  1.18MB/s   in 16s

<!--T:55-->
2015-06-23 11:39:26 (1.18 MB/s) - '/opt/bin/kubectl' saved [20077224/20077224]


core@Kube-MASTER ~ $ sudo chmod 755 /opt/bin/kubectl


Test de comunicare cu dumneavoastră API Kubernetes :


core@Kube-MASTER ~ $ kubectl get node
NAME         LABELS                              STATUS
10.1.1.215   kubernetes.io/hostname=10.1.1.215   Ready
10.1.1.83    kubernetes.io/hostname=10.1.1.83    Ready


core@Kube-MASTER ~ $ kubectl cluster-info
Kubernetes master is running at http://localhost:8080


Astfel ne poate implementa un container prima Nginx în cluster nostru :


core@Kube-MASTER ~ $ kubectl run-container nginx --image=nginx
CONTROLLER   CONTAINER(S)   IMAGE(S)   SELECTOR              REPLICAS
nginx        nginx          nginx      run-container=nginx   1


Apoi am pot, sau chiar pe care gazdele noastre acest container este implementat, numele pod și perioada de anchetă care a fost a fost afectată :


core@Kube-MASTER ~ $ kubectl get pods
POD           IP            CONTAINER(S)   IMAGE(S)   HOST                    LABELS                STATUS    CREATED     MESSAGE
nginx-zia71   10.244.38.2                             10.1.1.215/10.1.1.215   run-container=nginx   Running   3 minutes
                            nginx          nginx                                                    Running   1 minutes


Găsim acest aceleaşi informaţii prin tabloul de bord Kubernete UI de a merge "Vedere " Apoi "Păstăi " :


Kubernetes-UI-6.png


Putem vedea ip gazdă pe care acest container dislocate, cu numele de Pod şi adresa sa de ip :


Kubernetes-UI-7.png


Făcând clic pe ea devine mai multe detalii pe nostru Pod :


Kubernetes-UI-8.png


Putem opri nostru recipient simplu :


core@Kube-MASTER ~ $ kubectl stop rc nginx
replicationcontrollers/nginx


Ne poate implementa, de asemenea, nostru container cu 2 replici :


core@Kube-MASTER ~ $ kubectl run-container nginx --image=nginx --replicas=2
CONTROLLER   CONTAINER(S)   IMAGE(S)   SELECTOR              REPLICAS
nginx        nginx          nginx      run-container=nginx   2


core@Kube-MASTER ~ $ kubectl get pods
POD           IP            CONTAINER(S)   IMAGE(S)   HOST                    LABELS                STATUS    CREATED          MESSAGE
nginx-7gen5   10.244.38.3                             10.1.1.215/10.1.1.215   run-container=nginx   Running   About a minute
                            nginx          nginx                                                    Running   39 seconds
nginx-w4xue   10.244.23.3                             10.1.1.83/10.1.1.83     run-container=nginx   Running   About a minute
                            nginx          nginx                                                    Running   About a minute


Kubernetes-UI-9.png


Pentru mai multe informaţii, arhitectura, componentele și funcționarea un cluster Kubernetes vă invităm să citiţi documentaţia oficială "Kubernetes de arhitectură" :


Nu sunteți autorizat să publicați comentarii.