Bereitstellen eines Clusters Kubernetes mit CoreOS

Aus De Ikoula wiki
Jump to navigation Jump to search

fr:Deployer un cluster Kubernetes avec CoreOS

Dieser Artikel wurde maschinell übersetzt. Sie können den Artikel Quelle hier ansehen.

[[:fr::nl:Implementeer een cluster Kubernetes met CoreO]][[:fr:nl:Implementeer een cluster Kubernetes met CoreO]] [[:fr::it:Distribuire un cluster Kubernetes con CoreO]]fr:it:Distribuire un cluster Kubernetes con CoreOS [[:fr::pt:Implantar um cluster Kubernetes com CoreO]]fr:pt:Implantar um cluster Kubernetes com CoreOS [[:fr::es:Implementar un clúster Kubernetes con CoreO]]fr:es:Implementar un clúster Kubernetes con CoreOS [[:fr::en:Deploy a cluster Kubernetes with CoreO]]fr:en:Deploy a cluster Kubernetes with CoreOS



Dieses Verfahren beschreibt, wie schnell bereitstellen und einfach einen Cluster Kubernetes Multi-Knoten mit 3 CoreOS-Instanzen. Kubernetes arbeiten im Clientmodus - Server, Client Kubernetes heißt "Kubernetes Diener " und dem Server "Kubernetes Meister ". Die Kubernetes Master-Instanz ist die Instanz, die Instanzen Kubernetes Schergen zentral koordiniert werden. In unserem Beispiel wird eine Instanz CoreOS die Rolle von Meister Kubernetes und die anderen beiden Instanzen werden die Rolle des Knotens Kubernetes (Dieners ).


Kubernetes ist ein System der offenen Orchestrierung Quellcode erstellt von Google zum Verwalten von Anwendungscontainer mit Docker auf einem Cluster von mehreren Hosts (3 VM CoreOS in unserem Beispiel ). Es ermöglicht die Bereitstellung, Wartung und Skalierbarkeit von Anwendungen. Weitere Informationen können Sie auf gehen GitHub Kubernetes


Wir gehen davon aus, dass Ihre 3 CoreOS Instanzen sind bereits bereitgestellt, Qu 'Sie können miteinander kommunizieren und dass man ssh mit dem Kern der Benutzer eingeloggt ist.


Wenn dies nicht bereits erfolgt, aktualisieren Ihre CoreOS Instanzen, so dass sie mindestens in der Version CoreOS 653.0.0 und beinhalten DCE 2 (Siehe unsere FAQ CoreOS manuell aktualisieren). In unserem Fall sind alle unsere Körper in stabilen CoreOS 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"


Wir müssen auch sicherstellen, dass alle unsere CoreOS Instanzen die anderen Maschine für ordnungsgemäßen Betrieb Kontext Cluster-ID haben. Einfach die Datei löschen /etc/machine-id und starten Sie jede Ihrer Instanzen CoreOS entweder :


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


Kubernetes Master Instanzkonfiguration :

Überschreiben die Datei Cloud - Standard config.yml an unsere Kubernetes Master-Konfiguration durch Ausführen der folgenden Befehle (nur auf die Instanz, die als Master und in der gleichen Reihenfolge als unten handeln werden ) :


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 entweder effective :


core@Kube-MASTER ~ $ sudo reboot


Wir überprüfen, dass unser Körper richtig initialisiert wird :


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


Sie sehen auch Dienste /hören Anschlüsse (Es gibt Serverkomponenten /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


Konfiguration von Instanzen Kubernetes Schergen :

Überschreiben die Datei Cloud - Standard config.yml an unsere Kubernetes Minion -Konfiguration durch Ausführen einer der folgenden Befehle auf allen Ihrer Instanz, die die Rolle des Kubernetes Minion (nur auf Instanzen, die den Knoten Rolle spielen werden /Dieners 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`


Vorsicht, es ist notwendig, die private Ip-Adresse von Ihrem master Kubernetes-Instanz im folgenden Befehl anzupassen (Ersetzen 10.1.1.138 von der privaten Ip von Ihrem master Kubernetes-Instanz ) Geben Sie folgenden Befehl :


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


Endlich einmal haben führen Sie diese Befehle identisch auf jeder Ihrer Instanzen /nodes kubernetes Dieners , redémarrez celles-ci afin que leur configuration soient effectives et quelles joignent le cluster.


core@Kube-MINION1 ~ $ sudo reboot


Wir überprüfen unsere 2 instances kubernetes Dieners ont bien rejoint notre cluster (Geben Sie folgenden Befehl 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


Auf unsere Instanzen Kubernetes Minion hier Dienstleistungen /hören Anschlüsse (dont le service Kubelet par lequel l'échange d'informations se fait avec le Kubernetes Meister ) :


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


Überprüfung der Kommunikation mit dem Master-Kubernetes-API :

Die UI-Kubernetes :

Um das Dashboard Kubernetes zuzugreifen, müssen Sie Verbindungen zu Port zulassen 8080 (Kubernetes Meister API server) und einen Port durchgeführt, ggf. Weiterleitung (Bereich weiterleiten ) Hafen 8080 de votre instance Kubernetes Meister . Ensuite, il vous suffit d'accéder à l'url http://adresse_ip_publique_instance_kubernetes_master:8080/static/app/#/dashboard/ in Ihrem Browser :


Kubernetes-UI.png


Seit diesem Dashboard gehören Sie andere mögliche zum Anzeigen von Informationen auf Ihrem Knoten (Kubernetes Minion ). Klicken Sie hierzu auf "Anzahl der Ansichten " :


Kubernetes-UI-2.png


Klicken Sie auf "Knoten " :


Kubernetes-UI-3.png


La liste de vos nodes Kubernetes Diener apparait :


Kubernetes-UI-4.png


Klicken Sie auf l'un d'eux pour afficher les informations relatives à ce node (Version von Docker, System, KubeProxy und Kubelet, etc. |) :


Kubernetes-UI-5.png


Kubernetes CLI :


Sie können auch die Tools Kubectl deDann votre instance Kubernetes Meister . Pour se faire, vous devez installer cette utilitaire comme suit :


Une fois connecté en ssh sur votre instance Kubernetes Meister 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


Test der gute Kommunikation mit Ihren 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


Wir können somit einen ersten Container Nginx in unserem Cluster bereitstellen, :


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


Dann wir können oder sogar auf die unsere Gastgeber dieser Container bereitgestellt wird, den Namen der die Hülse und die Ip, die war war betroffen :


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


Wir finden diese Informationen über die Kubernete UI-Dashboard in "Anzahl der Ansichten " Dann "Hülsen " :


Kubernetes-UI-6.png


Wir sehen die Ip des Hosts auf dem Container bereitgestellt, mit dem Namen der Pod und seine IP-Adresse :


Kubernetes-UI-7.png


Ein Klick darauf ruft weitere Details auf unserer Pod :


Kubernetes-UI-8.png


Wir können unsere Container einfach aufhören :


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


Wir können auch unsere Container mit bereitstellen 2 Replikate :


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


Für weitere Informationen laden zur Architektur, Komponenten und zum Betrieb eines Clusters Kubernetes wir Sie, die offizielle Dokumentation zu lesen "Kubernetes Architektur" :


Du bist nicht berechtigt Kommentare hinzuzufügen.