Bereitstellen eines Clusters Kubernetes mit CoreOS

Aus De Ikoula wiki
Jump to navigation Jump to search

de:Bereitstellen eines Clusters Kubernetes mit 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 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 fr:Deployer un cluster Kubernetes avec CoreOS

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






Dieses Verfahren beschreibt, wie schnell bereitstellen und einfach einen Clus Kubernetes Multi-Knoten mi 3 CoreOS-Instanzen. Kubernetes arbeiten im Clientmodus - Server, Client Kubernetes heißt "Kubernetes Diene" und dem Serv "Kubernetes Meist". 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 (Diene).


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 Beispi). 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 bereitgestell'Sie können miteinander kommuniziere 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 2 (Siehe unsere CoreOS manuell aktualisieren). In unserem Fall sind alle unsere Körper in stabilen Cor 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 ent :


$ 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


Wir unsere Instanz neu starten, damit die Konfiguration wirksam ist :


core@Kube-MASTER ~ $ sudo reboot


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


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ü (Es gibt Serverkomponenten /Master Kubernete):


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

Ü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/Diener und in der gleichen Reihenfolge als unten ) :


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 an (Ersetzen 10.1.1.138 von der privaten Ip von Ihrem master Kubernetes-Ins) Geben Sie folgenden B :


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 /Knoten Kubernetes Diener, Neustarten, damit ihre Konfiguration sind effektiv und was dem Cluster beitreten.


core@Kube-MINION1 ~ $ sudo reboot


Wir überprüfen unser 2 Nun, Instanzen Kubernetes Diener trat unser Cluster (der folgende Befehl ausgeführt werden kann, auf jedes Mitglied Ihrer Cluster-Instanz ) :


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 Dienstlei/hören Anschlü (einschließlich des Kubelet-Dienstes, mit denen der Austausch von Informationen mit Meister K) :


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

Um das Dashboard Kubernetes zuzugreifen, müssen Sie Verbindungen zu Port zulassen 8080 (Kubernetes API-Masterserver) und einen Port durchgeführt, ggf. Weiterleit (Bereich weit) Hafen 8080 Ihr Kubernetes-master-Instanz. Dann, einfach gehen Sie zu der 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 K (Kubernetes Minion). Klicken Sie hierzu auf "Anza" :


Kubernetes-UI-2.png


Klicken Si "Knot" :


Kubernetes-UI-3.png


Die Liste der Ihre Knoten Kubernetes Diener ers :


Kubernetes-UI-4.png


Klicken Sie auf einen von ihnen Informationen zu diesem Knoten angezeigt (Version von Docker, System, KubeProxy und Kubelet, etc. |) :


Kubernetes-UI-5.png


Kubernetes CLI :


Sie können auch die Tools Kubectl Seit Ihrem Kubernetes master-Instanz. Hierzu müssen Sie dieses Dienstprogramm wie folgt installieren :


Sobald in ssh auf Ihrem Meister Kubernetes-Instanztyp folgende Befehle eingeloggt :


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


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


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 "Anza" Dan "Hü" :


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


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.