Implementar un clúster Kubernetes con CoreOS

De ES Ikoula wiki
Jump to navigation Jump to search

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 :


Dashboard


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


kubernetes views


Haga clic en "Los nodos " :


Choice in the list Nodes


La liste de vos nodes Minion Kubernetes apparait :


List of your choice


Haga clic en l'un d'eux pour afficher les informations relatives à ce node (versión de Docker, sistema, KubeProxy y Kubelet, etc. |) :


Information of your node


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


Select pods


Podemos ver la ip de lo host en los que implementa este recipiente, con el nombre de la vaina y su dirección ip :


Technical list of your pods


Hacer clic en él consigue más detalles de nuestra consola :


Information of your pods kubernetes


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


List of pods


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


No puedes publicar comentarios.