Wdróż klaster Kubernetes z CoreOS

Z Pl Ikoula wiki
Przejdź do nawigacji Przejdź do wyszukiwania
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

pl:Wdróż klaster Kubernetes z CoreOS he:לפרוס את אשכול Kubernetes עם CoreOS ja:クラスター コア Os と Kubernetes を展開します。 ar:نشر مجموعة كوبيرنيتيس مع CoreOS zh:部署群集与 CoreOS Kubernetes 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 es:Implementar un clúster Kubernetes con CoreOS en:Deploy a cluster Kubernetes with CoreOS ro:Implementaţi un cluster Kubernetes cu CoreOS ru:Развертывание кластера Kubernetes с CoreOS fr:Deployer un cluster Kubernetes avec CoreOS

Artykuł ten jest wynikiem translacji automatycznej wykonywane przez oprogramowanie. Możesz przeglądać źródła artykułu tutaj.








W tej procedurze opisano sposób wdrożyć szybko i po prostu klastra Kubernetes wielu węzłów z 3 przypadki CoreOS. Kubernetes działa w trybie klienckim - Serwer, klienta Kubernetes o nazwie "Kubernetes sługa " i serwer "Mistrz Kubernetes ". Kubernetes Master wystąpienie jest wystąpienie, które będzie centralnie orkiestrować wystąpień Kubernetes sługusów. W naszym przykładzie, wystąpienie CoreOS zagra rolę wzorca Kubernetes i innych dwóch wystąpień będzie odgrywać rolę węzła Kubernetes (ulubieniec ).


Kubernetes jest systemem aranżacji otwarte źródła stworzony przez Google do zarządzania aplikacji kontenera z Docker na grono wielu hostów (3 CoreOS VM w naszym przykładzie ). To pozwala na wdrożenie, utrzymanie i skalowalność aplikacji. Aby uzyskać więcej informacji można przejść GitHub Kubernetes


Zakładamy, że twój 3 CoreOS wystąpienia są już rozmieszczone, qu 'mogą się one komunikować ze sobą i że jesteś zalogowany ssh z rdzeniem użytkownika.


Jeśli nie jest to już zrobione, zaktualizować swoje wystąpienia CoreOS tak, że są one co najmniej w wersji CoreOS 653.0.0 i obejmują DCE 2 (Zobacz FAQ Ręczna aktualizacja CoreOS). W naszym przypadku wszystkie nasze ciała są w stabilnych 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"


Należy zapewnić, że wszystkie nasze wystąpienia CoreOS ma identyfikatora innej Maszyny dla prawidłowego działania kontekście klastra. Po prostu usunąć plik /etc/machine-id i ponownie uruchomić każdy z swoje wystąpienia CoreOS albo :


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


Konfigurację wystąpienia Kubernetes Master :

Zastąpienie pliku chmura - domyślna config.yml do naszej konfiguracji Kubernetes Master wykonując następujące polecenia (tylko na wystąpienie, która będzie działać jako kapitan i w tej samej kolejności niż poniżej ) :


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


Możemy ponownie nasze wystąpienie tak, aby jego konfiguracja jest skuteczne :


core@Kube-MASTER ~ $ sudo reboot


Możemy sprawdzić, że nasz organizm jest prawidłowo zainicjowany :


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


Możesz również zobaczyć usługi /nasłuchiwać portów (Tam są składniki serwera /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


Konfigurację wystąpienia Kubernetes sługusów :

Zastąpienie pliku chmura - domyślna config.yml do naszej konfiguracji Kubernetes Minion wykonując następujące polecenia na wszystkie swoje wystąpienie, które będą odgrywać rolę Kubernetes Minion (tylko na przypadki, które będzie odgrywać rolę węzła /ulubieniec i w tej samej kolejności niż poniżej ) :


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`


Uwaga, to jest niezbędne, aby dostosować adres ip prywatne kubernetes wzorca wystąpienie w ten rozkazywać poniżej (zastąpić 10.1.1.138 przez prywatne ip kubernetes wzorca wystąpienie ) Poniższe polecenie :


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


Wreszcie kiedyś mają wykonywania tych poleceń identycznie na każdym swoim wystąpień /węzłów kubernetes sługa, ponownie je tak, aby ich konfiguracja są skuteczne i co dołączyć do klastra.


core@Kube-MINION1 ~ $ sudo reboot


Sprawdzić, czy nasz 2 dobrze, wystąpienia kubernetes minion dołączył do naszego klastra (następujące polecenia mogą być uruchamiane na członka swojego wystąpienia klastra ) :


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


Na nasze wystąpienia usługi Kubernetes Minion tutaj /nasłuchiwać portów (włączając usługę Kubelet, przez co wymiana informacji odbywa się z głównego 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


Weryfikacja komunikacji z Master Kubernetes API :

UI Kubernetes :

Aby uzyskać dostęp do panelu Kubernetes, należy zezwalać na połączenia z portem 8080 (Kubernetes serwer główny API ) i przeprowadzić portu, jeśli wymagane przekazywanie (do przodu obszaru ) portu 8080 Kubernetes wzorca wystąpienie. Następnie, po prostu przejdź do adresu url http://adresse_ip_publique_instance_kubernetes_master:8080/static/app/#/dashboard/ w przeglądarce :


Kubernetes-UI.png


Od ten deska rozdzielcza, jesteś wśród innych możliwych do wyświetlania informacji o węzły (Kubernetes Minion). Do tego, możesz kliknąć na "Widoki " :


Kubernetes-UI-2.png


Kliknij na "Węzły " :


Kubernetes-UI-3.png


Zostanie wyświetlona lista twój ulubieniec Kubernetes węzłów :


Kubernetes-UI-4.png


Kliknij na jeden z nich, aby wyświetlić informacje na temat tego węzła (wersja z Docker, system, KubeProxy i Kubelet, itp. |) :


Kubernetes-UI-5.png


Kubernetes CLI :


Można również użyć narzędzia Kubectl Od Kubernetes wzorca wystąpienie. Aby to zrobić, należy zainstalować narzędzie następujący :


Po zalogowaniu do ssh na swoje wystąpienie Kubernetes główny typ ten kolejne polecenia :


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 dobrej komunikacji z Twojej 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


Możemy w ten sposób wdrożyć pierwszy kontener Nginx naszego klastra :


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


Wtedy możemy lub nawet na które nasi gospodarze tego kontenera jest wdrażana, nazwę pod i ip, która była wywarła :


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


Znajdujemy ten sam informacji poprzez panel Kubernete UI przechodząc "Widoki " Następnie "Strąki " :


Kubernetes-UI-6.png


Możemy zobaczyć ip hosta, na którym ten kontener rozmieszczone, z nazwą Pod i jego adres ip :


Kubernetes-UI-7.png


Klikając na niego dostaje więcej szczegółów na naszej Pod :


Kubernetes-UI-8.png


Możemy powstrzymać nasz kontener po prostu :


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


Możemy również wdrożyć nasz kontener z 2 repliki :


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


Aby uzyskać więcej informacji architektura, komponenty i funkcjonowania klastra Kubernetes Zapraszamy do czytania oficjalnej dokumentacji "Kubernetes architektura" :


Nie możesz publikować komentarzy.