Развертывание кластера Kubernetes с CoreOS

Материал из Ru Ikoula wiki
Jump to navigation Jump to search
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.

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

Эта статья является результатом автоматического перевода, выполняемого программного обеспечения. Вы можете посмотреть исходный статьи здесь.








Эта процедура описывает, как развернуть быстро и просто кластер Kubernetes несколько узлов с 3 экземпляры CoreOS. Kubernetes работа в режиме клиент - Сервер, клиент Kubernetes называется "Kubernetes Миньон " и сервер "Мастер Kubernetes ". Kubernetes мастер экземпляр является экземпляром, который будет планировать централизованно экземпляров Kubernetes слуг. В нашем примере экземпляр CoreOS будет играть роль главного Kubernetes и двух других экземпляров будет играть роль узла Kubernetes (Миньон ).


Kubernetes представляет собой систему открытых оркестровка источник, созданный Google для управления контейнера приложений с Докер на кластере нескольких хостов (3 VM CoreOS в нашем примере ). Это позволяет развертывания, обслуживания и масштабируемость приложений. Для получения дополнительной информации вы можете пойти GitHub Kubernetes


Мы предполагаем, что ваш 3 CoreOS экземпляры уже развернута, Цюй 'они могут общаться друг с другом и что вы вошли ssh с основного пользователя.


Если это уже не сделано, обновить экземпляры CoreOS так, что они, по крайней мере, в версии CoreOS 653.0.0 и включают в себя DCE 2 (Смотрите наш FAQ Вручную обновить CoreOS). В нашем случае все наши тела находятся в стабильных 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"


Мы должны также обеспечить, что все наши CoreOS экземпляры имеют идентификатор разные машины для правильной работы контекста кластера. Просто удалить файл /etc/machine-id и перезапустить каждый из экземпляров CoreOS либо :


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


Kubernetes мастер конфигурации экземпляра :

Перезаписать файл облако - по умолчанию config.yml для нашей Kubernetes мастер конфигурации, выполнив следующие команды (только на экземпляре, который будет выступать в качестве хозяина и в том же порядке, чем ниже ) :


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


Мы перезапустить экземпляр таким образом, что его конфигурация эффективна :


core@Kube-MASTER ~ $ sudo reboot


Мы проверяем, что наше тело правильно инициализирован :


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


Вы также можете увидеть услуги /прослушать портов (Существуют серверные компоненты /Мастер 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


Настройка экземпляров Kubernetes фаворитами :

Перезаписать файл облако - по умолчанию config.yml для нашей Kubernetes Миньон конфигурации, выполнив следующие команды на всех ваших экземпляра, который будет играть роль Kubernetes Миньон (только на экземплярах, которые будут играть роль узла /Миньон и в том же порядке, чем ниже ) :


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`


Осторожно надо адаптировать частный IP-адрес экземпляра мастер kubernetes в команде ниже (заменить 10.1.1.138 частные ip мастер экземпляра kubernetes ) команда ниже :


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


Наконец однажды вы должны выполнить эти команды одинаково на каждом из экземпляров /узлы kubernetes Миньон, перезапустить их, так что их конфигурации являются эффективными и что присоединиться к кластеру.


core@Kube-MINION1 ~ $ sudo reboot


Мы проверить, что наши 2 Ну, экземпляры kubernetes Миньон присоединился наш кластер (Следующая команда может выполняться на любой член экземпляра кластера ) :


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


На нашем экземпляры служб Kubernetes Миньон здесь /прослушать портов (включая Kubelet службу, в которой обмен информацией осуществляется с мастер 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


Проверка связи с Master Kubernetes API :

UI Kubernetes :

Для доступа к панели управления Kubernetes, вам нужно разрешить подключения к порту 8080 (Kubernetes-главный сервер API ) и осуществляется через порт при необходимости пересылки (вперед область ) Порт 8080 Ваш мастер экземпляр Kubernetes. Затем, просто перейдите по URL-адресу http://adresse_ip_publique_instance_kubernetes_master:8080/static/app/#/dashboard/ в вашем браузере :


Kubernetes-UI.png


Начиная с этой панели, вы находитесь среди других возможных для отображения информации о вашем узлы (Kubernetes Миньон ). Для этого, вы можете нажать на "Просмотров " :


Kubernetes-UI-2.png


Нажмите на "Узлы " :


Kubernetes-UI-3.png


Появится список ваших узлы Kubernetes Миньон :


Kubernetes-UI-4.png


Нажмите на одну из них для отображения сведений об этом узле (Версия Докер, системы, KubeProxy и Kubelet, и т.д. |) :


Kubernetes-UI-5.png


Kubernetes CLI :


Вы также можете использовать инструменты Kubectl С момента вашего главного экземпляра Kubernetes. Чтобы сделать это, необходимо установить эту утилиту следующим :


После того, как войти в ssh на ваш основной тип экземпляра Kubernetes следующие команды :


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


Испытание хорошие связи с 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


Таким образом мы сможем развернуть первый контейнер Nginx в нашем кластере :


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


Тогда мы можем или даже на которой наши хозяева развернут этот контейнер, имя стручка и ip, который был пострадала :


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


Мы находим эту же информацию через панель Kubernete пользовательского интерфейса, перейдя "Просмотров " Затем "Стручки " :


Kubernetes-UI-6.png


Мы можем видеть на IP-адрес хоста, на котором развернут этот контейнер, с именем Pod и его IP-адрес :


Kubernetes-UI-7.png


Щелкать на ем получает более подробную информацию о наших Pod :


Kubernetes-UI-8.png


Мы можем остановить наши контейнера просто :


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


Мы также можно развернуть наши контейнера с 2 реплики :


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


Для получения дополнительной информации на архитектуру, компоненты и функционирования кластера Kubernetes мы приглашаем вас прочитать официальной документации «Kubernetes архитектура» :


Вы не можете оставлять комментарии.