Implementaţi un cluster Kubernetes cu 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ă :
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 " :
Faceţi clic pe "Noduri " :
Lista ta noduri Kubernetes minion apare :
Faceţi clic pe una dintre ele pentru a afişa informaţii despre acest nod (versiunea Docker, sistem, KubeProxy, şi Kubelet, etc. |) :
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 " :
Putem vedea ip gazdă pe care acest container dislocate, cu numele de Pod şi adresa sa de ip :
Făcând clic pe ea devine mai multe detalii pe nostru Pod :
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
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ă" :
Enable comment auto-refresher