Implementar un clúster Kubernetes con CoreOS
es:Implementar un clúster Kubernetes con CoreOS
he:לפרוס את אשכול Kubernetes עם CoreOS
ru:Развертывание кластера Kubernetes с CoreOS
ja:クラスター コア Os と Kubernetes を展開します。
ar:نشر مجموعة كوبيرنيتيس مع CoreOS
zh:部署群集与 CoreOS Kubernetes
ro:Implementaţi un cluster Kubernetes cu CoreOS
pl:Wdróż klaster Kubernetes z CoreOS
de:Bereitstellen eines Clusters Kubernetes mit CoreOS
nl:Implementeer een cluster Kubernetes met CoreOS
it:Distribuire un cluster Kubernetes con CoreOS
pt:Implantar um cluster Kubernetes com CoreOS
en:Deploy a cluster Kubernetes with CoreOS
fr:Deployer un cluster Kubernetes avec CoreOS
Este procedimiento describe cómo implementar rápidamente y simplemente un clúster Kubernetes múltiples nodos con 3 instancias de CoreOS. Kubernetes trabajar en modo cliente - Servidor, cliente Kubernetes se denomina "Minion Kubernetes " y el servidor "Maestro de Kubernetes ". La instancia de Kubernetes Master es la instancia que orquestará centralmente instancias Kubernetes súbditos. En nuestro ejemplo, una instancia CoreOS desempeñará el papel de Kubernetes principal y las otras dos instancias desempeñará el papel de nodo Kubernetes (Minion ).
Kubernetes es un sistema de fuente de orquestación abierto creado por Google para la gestión de contenedores de aplicación con Docker en un clúster de hosts múltiples (3 CoreOS de VM en nuestro ejemplo ). Permite la implementación, mantenimiento y escalabilidad de las aplicaciones. Para más información se puede consultar GitHub Kubernetes
Suponemos que su 3 Instancias de CoreOS ya se implementan, qu 'puede comunicarse con los demás y que registran ssh con la base del usuario.
Si esto no se ha hecho, actualizar las instancias de CoreOS para que estén al menos en la versión CoreOS 653.0.0 como DCE 2 (ver nuestras FAQ Actualizar manualmente CoreOS). En nuestro caso todos nuestros cuerpos son en CoreOS estable 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"
También debemos asegurarnos de que todas las instancias de CoreOS tienen un ID de máquina diferentes para cluster de contexto de funcionamiento. Simplemente borrar el archivo /etc/machine-id y cada una de sus instancias CoreOS cualquier :
$ sudo rm -f /etc/machine-id && sudo reboot
Configuración de la instancia de Kubernetes Master :
Sobrescribir la nube archivo - default config.yml a nuestra configuración Kubernetes maestro mediante la realización de los siguientes comandos (sólo en la instancia que actuará como maestro y en el mismo orden que a continuación ) :
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
On redémarre notre instance afin que sa configuration cualquier effective :
core@Kube-MASTER ~ $ sudo reboot
Comprobamos que nuestro cuerpo está correctamente inicializado :
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
También se pueden ver servicios /Escucha puertos (Hay componentes de servidor /Maestro 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
Configuración de instancias Kubernetes secuaces :
Sobrescribir la nube archivo - default config.yml a nuestra configuración Kubernetes súbditos mediante la realización de los siguientes comandos en todas las de la instancia que desempeñará el papel de súbdito Kubernetes (sólo en casos que jugarán el nodo papel /Minion et dans le même ordre d'exécution que celui ci-dessous) :
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`
PRECAUCIÓN es necesario adaptar la dirección ip privada de la instancia principal de kubernetes en el siguiente comando (reemplazar 10.1.1.138 la ip privada de la instancia principal de kubernetes ) el siguiente comando :
core@Kube-MINION1 ~ $ sudo sed -i 's#MASTER_PRIVATE_IP#10.1.1.138#g' /usr/share/oem/cloud-config.yml
Finalmente una vez se han realizar estos comandos idénticamente en cada una de sus instancias /nodes kubernetes Minion , redémarrez celles-ci afin que leur configuration soient effectives et quelles joignent le cluster.
core@Kube-MINION1 ~ $ sudo reboot
Verificamos que nuestra 2 instances kubernetes Minion ont bien rejoint notre cluster (el siguiente comando peut être exécuté sur n'importe laquelle de vos instances membre de votre cluster) :
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
En nuestros casos Minion Kubernetes aquí servicios /Escucha puertos (dont le service Kubelet par lequel l'échange d'informations se fait avec le Maestro de Kubernetes ) :
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
Verificación de la comunicación con la Master API Kubernetes :
La interfaz de usuario Kubernetes :
Para acceder a la consola Kubernetes, que necesita permitir que las conexiones al puerto 8080 (Maestro de Kubernetes API server) y un puerto si es necesario reenvío (adelante zona ) Puerto 8080 de votre instance Maestro de Kubernetes . Ensuite, il vous suffit d'accéder à l'url http://adresse_ip_publique_instance_kubernetes_master:8080/static/app/#/dashboard/ en el explorador :
Desde este panel, es entre otros posibles para mostrar la información en los nodos (Minion Kubernetes ). Para esto, usted puede hacer clic en "Vistas " :
Haga clic en "Los nodos " :
La liste de vos nodes Minion Kubernetes apparait :
Haga clic en l'un d'eux pour afficher les informations relatives à ce node (versión de Docker, sistema, KubeProxy y Kubelet, etc. |) :
Kubernetes CLI :
También puede utilizar las herramientas de Kubectl deEntonces votre instance Maestro de Kubernetes . Pour se faire, vous devez installer cette utilitaire comme suit :
Une fois connecté en ssh sur votre instance Maestro de Kubernetes saisissez les commandes suivantes :
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
Prueba de una buena comunicación con su 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
Así podemos implementar un primer contenedor Nginx en nuestro cluster :
core@Kube-MASTER ~ $ kubectl run-container nginx --image=nginx
CONTROLLER CONTAINER(S) IMAGE(S) SELECTOR REPLICAS
nginx nginx nginx run-container=nginx 1
Entonces puede o incluso en que nuestros anfitriones este recipiente está desplegado, el nombre de la vaina y la ip que afectó :
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
Encontramos esta misma información a través de la consola de Kubernete UI por ir "Vistas " Entonces "Las vainas " :
Podemos ver la ip de lo host en los que implementa este recipiente, con el nombre de la vaina y su dirección ip :
Hacer clic en él consigue más detalles de nuestra consola :
Podemos dejar nuestro envase simplemente :
core@Kube-MASTER ~ $ kubectl stop rc nginx
replicationcontrollers/nginx
También podemos implementar nuestro envase con 2 réplicas :
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
Para obtener más información, en la arquitectura, componentes y operación de un cluster Kubernetes te invitamos a leer la documentación oficial "Kubernetes arquitectura" :
Habilitar actualización automática de comentarios