Почетак рада са Кубернетес-ом на ЦентОС-у 7

Почетак рада са Кубернетес-ом на ЦентОС-у 7

Кубернетес је платформа отвореног кода коју је развио Гоогле за управљање контејнерским апликацијама на кластеру сервера. Надовезује се на деценију и по искуства које Гоогле има у покретању кластера контејнера у великом обиму и пружа програмерима инфраструктуру у Гоогле стилу, користећи најбоље пројекте отвореног кода, као што су:

  • Доцкер : технологија контејнера за апликације.
  • Етцд : дистрибуирано складиште података кључ/вредност које управља информацијама широм кластера и пружа откривање услуга.
  • Фланнел : мрежа са преклапањем која омогућава повезивање контејнера на више сервера.

Кубернетес омогућава програмерима да декларативно дефинишу своју инфраструктуру апликација кроз ИАМЛ датотеке и апстракције као што су подови, РЦ-ови и услуге (више о томе касније) и осигурава да се основни кластер у сваком тренутку подудара са корисничким дефинисаним стањем.

Неке од његових карактеристика укључују:

  • Аутоматско заказивање системских ресурса и аутоматско постављање контејнера апликација широм кластера.
  • Скалирање апликација у ходу са једном командом.
  • Непрекидна ажурирања са нула застоја.
  • Самоизлечење: аутоматско репрограмирање апликације ако сервер не успе, аутоматско поновно покретање контејнера, провере здравља.

Пређите на инсталацију ако сте већ упознати са Кубернетесом.

Основни појмови

Кубернетес нуди програмерима следеће апстракције (логичке јединице):

  • Подс.
  • Контролори репликације.
  • Етикете.
  • Услуге.

Подс

То је основна јединица Кубернетес радних оптерећења. Под моделира „логички хост“ специфичан за апликацију у контејнерском окружењу. Лаички речено, моделира групу апликација или услуга које су радиле на истом серверу у свету пре-контејнера. Контејнери унутар модула деле исти мрежни простор имена и могу да деле и количине података.

Контролори репликације

Подови су одлични за груписање више контејнера у логичке апликационе јединице, али не нуде репликацију или репрограмирање у случају отказивања сервера.

Овде добро дође контролер репликације или РЦ. РЦ обезбеђује да одређени број подова дате услуге увек ради у кластеру.

Етикете

То су метаподаци кључ/вредност који се могу приложити било ком Кубернетес ресурсу (подови, РЦ-ови, услуге, чворови, ...).

Услуге

Подови и контролери репликације су одлични за примену и дистрибуцију апликација широм кластера, али подови имају ефемерне ИП адресе које се мењају након поновног распореда или поновног покретања контејнера.

Кубернетес услуга обезбеђује стабилну крајњу тачку (фиксни виртуелни ИП + повезивање порта за хост сервере) за групу подова којима управља контролер репликације.

Кубернетес кластер

У свом најједноставнијем облику, Кубернетес кластер се састоји од два типа чворова:

  • 1 Кубернетес мастер.
  • Н Кубернетес чворови.

Кубернетес мастер

Кубернетес мастер је контролна јединица читавог кластера.

Главне компоненте мајстора су:

  • Етцд: глобално доступно складиште података које чува информације о кластеру и услугама и апликацијама које раде на кластеру.
  • Кубе АПИ сервер: ово је главни управљачки центар Кубернетес кластера и излаже РЕСТфул интерфејс.
  • Менаџер контролера: управља репликацијом апликација којима управљају контролери репликације.
  • Планер: прати искоришћеност ресурса у целом кластеру и у складу са тим додељује радна оптерећења.

Кубернетес чвор

Кубернетес чвор су сервери радника који су одговорни за покретање подова.

Главне компоненте чвора су:

  • Доцкер: демон који покреће контејнере апликација дефинисане у подовима.
  • Кубелет: контролна јединица за махуне у локалном систему.
  • Кубе-прокси: мрежни прокси који обезбеђује исправно рутирање за Кубернетес услуге.

Инсталација

У овом водичу ћемо креирати кластер са 3 чвора користећи ЦентОС 7 сервере:

  • 1 Кубернетес мастер (кубе-мастер)
  • 2 Кубернетес чвора (кубе-ноде1, кубе-ноде2)

Касније можете додати онолико додатних чворова колико желите након исте процедуре инсталације за Кубернетес чворове.

Сви чворови

Конфигуришите имена хостова и /etc/hosts:

# /etc/hostname
kube-master
# or kube-node1, kube-node2

# append to /etc/hosts
replace-with-master-server-ip kube-master
replace-with-node1-ip kube-node1
replace-with-node2-ip kube-node2

Онемогући заштитни зид:

systemctl disable firewalld
systemctl stop firewalld

Кубернетес мастер

Инсталирајте Кубернетес мастер пакете:

yum install etcd kubernetes-master

Конфигурација:

# /etc/etcd/etcd.conf
# leave rest of the lines unchanged
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_LISTEN_PEER_URLS="http://localhost:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://0.0.0.0:2379"

# /etc/kubernetes/config
# leave rest of the lines unchanged
KUBE_MASTER="--master=http://kube-master:8080"

# /etc/kubernetes/apiserver
# leave rest of the lines unchanged
KUBE_API_ADDRESS="--address=0.0.0.0"
KUBE_ETCD_SERVERS="--etcd_servers=http://kube-master:2379"

Старт Етцд:

systemctl start etcd

Инсталирајте и конфигуришите Фланнел оверлаи мрежну ткање (ово је потребно да би контејнери који раде на различитим серверима могли да се виде):

yum install flannel

Креирајте конфигурациону датотеку фланела ( flannel-config.json):

{
  "Network": "10.20.0.0/16",
  "SubnetLen": 24,
  "Backend": {
    "Type": "vxlan",
    "VNI": 1
  }  
}

Подесите Фланнел конфигурацију на Етцд серверу:

etcdctl set coreos.com/network/config < flannel-config.json

Усмерите Фланнел на Етцд сервер:

# /etc/sysconfig/flanneld
FLANNEL_ETCD="http://kube-master:2379"

Омогућите услуге тако да почну при покретању:

systemctl enable etcd
systemctl enable kube-apiserver
systemctl enable kube-controller-manager
systemctl enable kube-scheduler
systemctl enable flanneld

Поново покрените сервер.

Кубернетес чвор

Инсталирајте Кубернетес чворне пакете:

yum install docker kubernetes-node

Следећа два корака ће конфигурисати Доцкер да користи оверлаифс за боље перформансе. За више информација посетите овај блог пост :

Избришите тренутни доцкер директоријум за складиштење:

systemctl stop docker
rm -rf /var/lib/docker

Промените конфигурационе датотеке:

# /etc/sysconfig/docker
# leave rest of lines unchanged
OPTIONS='--selinux-enabled=false'

# /etc/sysconfig/docker
# leave rest of lines unchanged
DOCKER_STORAGE_OPTIONS=-s overlay

Конфигуришите кубе-ноде1 да користи наш претходно конфигурисани мастер:

# /etc/kubernetes/config
# leave rest of lines unchanged
KUBE_MASTER="--master=http://kube-master:8080"

# /etc/kubernetes/kubelet
# leave rest of the lines unchanged
KUBELET_ADDRESS="--address=0.0.0.0"
# comment this line, so that the actual hostname is used to register the node
# KUBELET_HOSTNAME="--hostname_override=127.0.0.1"
KUBELET_API_SERVER="--api_servers=http://kube-master:8080"

Инсталирајте и конфигуришите Фланнел оверлаи мрежну структуру (опет - ово је потребно да би контејнери који раде на различитим серверима могли да виде једни друге):

yum install flannel

Усмерите Фланнел на Етцд сервер:

# /etc/sysconfig/flanneld
FLANNEL_ETCD="http://kube-master:2379"

Омогући услуге:

systemctl enable docker
systemctl enable flanneld
systemctl enable kubelet
systemctl enable kube-proxy

Поново покрените сервер.

Тестирајте свој Кубернетес сервер

Након што се сви сервери поново покрену, проверите да ли ваш Кубернетес кластер ради:

[root@kube-master ~]# kubectl get nodes
NAME         LABELS                              STATUS
kube-node1   kubernetes.io/hostname=kube-node1   Ready
kube-node2   kubernetes.io/hostname=kube-node2   Ready

Пример: Постављање Селениум мреже користећи Кубернетес

Селен је оквир за аутоматизацију претраживача у сврхе тестирања. То је моћан алат из арсенала сваког веб програмера.

Селенијум мрежа омогућава скалабилно и паралелно даљинско извршавање тестова преко кластера Селенијум чворова који су повезани са централним Селенијум чвориштем.

Since Selenium nodes are stateless themselves and the amount of nodes we run is flexible, depending on our testing workloads, this is a perfect candidate application to be deployed on a Kubernetes cluster.

In the next section, we'll deploy a grid consisting of 5 application containers:

  • 1 central Selenium hub that will be the remote endpoint to which our tests will connect.
  • 2 Selenium nodes running Firefox.
  • 2 Selenium nodes running Chrome.

Deployment strategy

To automatically manage replication and self-healing, we'll create a Kubernetes replication controller for each type of application container we listed above.

To provide developers who are running tests with a stable Selenium hub endpoint, we'll create a Kubernetes service connected to the hub replication controller.

Selenium hub

Replication controller
# selenium-hub-rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
  name: selenium-hub
spec:
  replicas: 1
  selector:
    name: selenium-hub
  template:
    metadata:
      labels:
        name: selenium-hub
    spec:
      containers:
        - name: selenium-hub
          image: selenium/hub
          ports:
            - containerPort: 4444

Deployment:

[root@kube-master ~]# kubectl create -f selenium-hub-rc.yaml
replicationcontrollers/selenium-hub
[root@kube-master ~]# kubectl get rc
CONTROLLER     CONTAINER(S)   IMAGE(S)       SELECTOR            REPLICAS
selenium-hub   selenium-hub   selenium/hub   name=selenium-hub   1
[root@kube-master ~]# kubectl get pods
NAME                 READY     STATUS    RESTARTS   AGE
selenium-hub-pilc8   1/1       Running   0          50s
[root@kube-master ~]# kubectl describe pod selenium-hub-pilc8
Name:               selenium-hub-pilc8
Namespace:          default
Image(s):           selenium/hub
Node:               kube-node2/45.63.16.92
Labels:             name=selenium-hub
Status:             Running
Reason:             
Message:            
IP:             10.20.101.2
Replication Controllers:    selenium-hub (1/1 replicas created)
Containers:
  selenium-hub:
    Image:      selenium/hub
    State:      Running
      Started:      Sat, 24 Oct 2015 16:01:39 +0000
    Ready:      True
    Restart Count:  0
Conditions:
  Type      Status
  Ready     True
Events:
  FirstSeen             LastSeen            Count   From            SubobjectPath               Reason      Message
  Sat, 24 Oct 2015 16:01:02 +0000   Sat, 24 Oct 2015 16:01:02 +0000 1   {scheduler }                            scheduled   Successfully assigned selenium-hub-pilc8 to kube-node2
  Sat, 24 Oct 2015 16:01:05 +0000   Sat, 24 Oct 2015 16:01:05 +0000 1   {kubelet kube-node2}    implicitly required container POD   pulled      Successfully pulled Pod container image "gcr.io/google_containers/pause:0.8.0"
  Sat, 24 Oct 2015 16:01:05 +0000   Sat, 24 Oct 2015 16:01:05 +0000 1   {kubelet kube-node2}    implicitly required container POD   created     Created with docker id 6de00106b19c
  Sat, 24 Oct 2015 16:01:05 +0000   Sat, 24 Oct 2015 16:01:05 +0000 1   {kubelet kube-node2}    implicitly required container POD   started     Started with docker id 6de00106b19c
  Sat, 24 Oct 2015 16:01:39 +0000   Sat, 24 Oct 2015 16:01:39 +0000 1   {kubelet kube-node2}    spec.containers     pulled      Successfully pulled image "selenium/hub"
  Sat, 24 Oct 2015 16:01:39 +0000   Sat, 24 Oct 2015 16:01:39 +0000 1   {kubelet kube-node2}    spec.containers     created     Created with docker id 7583cc09268c
  Sat, 24 Oct 2015 16:01:39 +0000   Sat, 24 Oct 2015 16:01:39 +0000 1   {kubelet kube-node2}    spec.containers     started     Started with docker id 7583cc09268c

Овде можемо видети да је Кубернетес поставио мој селен-хуб контејнер на кубе-ноде2.

Услуга
# selenium-hub-service.yaml
apiVersion: v1
kind: Service
metadata:
  name: selenium-hub
spec:
  type: NodePort
  ports:
  - port: 4444
    protocol: TCP
    nodePort: 30000
  selector:
    name: selenium-hub

Примена:

[root@kube-master ~]# kubectl create -f selenium-hub-service.yaml
You have exposed your service on an external port on all nodes in your
cluster.  If you want to expose this service to the external internet, you may
need to set up firewall rules for the service port(s) (tcp:30000) to serve traffic.

See http://releases.k8s.io/HEAD/docs/user-guide/services-firewalls.md for more details.
services/selenium-hub
[root@kube-master ~]# kubectl get services
NAME           LABELS                                    SELECTOR            IP(S)           PORT(S)
kubernetes     component=apiserver,provider=kubernetes   <none>              10.254.0.1      443/TCP
selenium-hub   <none>                                    name=selenium-hub   10.254.124.73   4444/TCP

Након постављања услуге, биће доступна са:

  • Било који Кубернетес чвор, преко виртуелне ИП адресе 10.254.124.73 и порта 4444.
  • Спољне мреже, преко јавних ИП адреса било којег Кубернетес чвора, на порту 30000.

Почетак рада са Кубернетес-ом на ЦентОС-у 7Почетак рада са Кубернетес-ом на ЦентОС-у 7 (користећи јавну ИП адресу другог Кубернетес чвора)

Чворови селена

Контролер репликације чвора Фирефок:

# selenium-node-firefox-rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
  name: selenium-node-firefox
spec:
  replicas: 2
  selector:
    name: selenium-node-firefox
  template:
    metadata:
      labels:
        name: selenium-node-firefox
    spec:
      containers:
        - name: selenium-node-firefox
          image: selenium/node-firefox
          ports:
            - containerPort: 5900
          env:
            - name: HUB_PORT_4444_TCP_ADDR
              value: "replace_with_service_ip"
            - name: HUB_PORT_4444_TCP_PORT
              value: "4444"

Примена:

Замените replace_with_service_ipу selenium-node-firefox-rc.yamlса стварним услуга ПР Селен хуб, у овом случају 10.254.124.73.

[root@kube-master ~]# kubectl create -f selenium-node-firefox-rc.yaml
replicationcontrollers/selenium-node-firefox

[root@kube-master ~]# kubectl get rc
CONTROLLER              CONTAINER(S)            IMAGE(S)                SELECTOR                     REPLICAS
selenium-hub            selenium-hub            selenium/hub            name=selenium-hub            1
selenium-node-firefox   selenium-node-firefox   selenium/node-firefox   name=selenium-node-firefox   2

[root@kube-master ~]# kubectl get pods
NAME                          READY     STATUS    RESTARTS   AGE
selenium-hub-pilc8            1/1       Running   1          1h
selenium-node-firefox-lc6qt   1/1       Running   0          2m
selenium-node-firefox-y9qjp   1/1       Running   0          2m

[root@kube-master ~]# kubectl describe pod selenium-node-firefox-lc6qt
Name:               selenium-node-firefox-lc6qt
Namespace:          default
Image(s):           selenium/node-firefox
Node:               kube-node2/45.63.16.92
Labels:             name=selenium-node-firefox
Status:             Running
Reason:             
Message:            
IP:             10.20.101.3
Replication Controllers:    selenium-node-firefox (2/2 replicas created)
Containers:
  selenium-node-firefox:
    Image:      selenium/node-firefox
    State:      Running
      Started:      Sat, 24 Oct 2015 17:08:37 +0000
    Ready:      True
    Restart Count:  0
Conditions:
  Type      Status
  Ready     True
Events:
  FirstSeen             LastSeen            Count   From            SubobjectPath               Reason      Message
  Sat, 24 Oct 2015 17:08:13 +0000   Sat, 24 Oct 2015 17:08:13 +0000 1   {scheduler }                            scheduled   Successfully assigned selenium-node-firefox-lc6qt to kube-node2
  Sat, 24 Oct 2015 17:08:13 +0000   Sat, 24 Oct 2015 17:08:13 +0000 1   {kubelet kube-node2}    implicitly required container POD   pulled      Pod container image "gcr.io/google_containers/pause:0.8.0" already present on machine
  Sat, 24 Oct 2015 17:08:13 +0000   Sat, 24 Oct 2015 17:08:13 +0000 1   {kubelet kube-node2}    implicitly required container POD   created     Created with docker id cdcb027c6548
  Sat, 24 Oct 2015 17:08:13 +0000   Sat, 24 Oct 2015 17:08:13 +0000 1   {kubelet kube-node2}    implicitly required container POD   started     Started with docker id cdcb027c6548
  Sat, 24 Oct 2015 17:08:36 +0000   Sat, 24 Oct 2015 17:08:36 +0000 1   {kubelet kube-node2}    spec.containers pulled      Successfully pulled image "selenium/node-firefox"
  Sat, 24 Oct 2015 17:08:36 +0000   Sat, 24 Oct 2015 17:08:36 +0000 1   {kubelet kube-node2}    spec.containers created     Created with docker id 8931b7f7a818
  Sat, 24 Oct 2015 17:08:37 +0000   Sat, 24 Oct 2015 17:08:37 +0000 1   {kubelet kube-node2}    spec.containers started     Started with docker id 8931b7f7a818

[root@kube-master ~]# kubectl describe pod selenium-node-firefox-y9qjp
Name:               selenium-node-firefox-y9qjp
Namespace:          default
Image(s):           selenium/node-firefox
Node:               kube-node1/185.92.221.67
Labels:             name=selenium-node-firefox
Status:             Running
Reason:             
Message:            
IP:             10.20.92.3
Replication Controllers:    selenium-node-firefox (2/2 replicas created)
Containers:
  selenium-node-firefox:
    Image:      selenium/node-firefox
    State:      Running
      Started:      Sat, 24 Oct 2015 17:08:13 +0000
    Ready:      True
    Restart Count:  0
Conditions:
  Type      Status
  Ready     True
Events:
  FirstSeen             LastSeen            Count   From            SubobjectPath               Reason      Message
  Sat, 24 Oct 2015 17:08:13 +0000   Sat, 24 Oct 2015 17:08:13 +0000 1   {scheduler }                            scheduled   Successfully assigned selenium-node-firefox-y9qjp to kube-node1
  Sat, 24 Oct 2015 17:08:13 +0000   Sat, 24 Oct 2015 17:08:13 +0000 1   {kubelet kube-node1}    implicitly required container POD   pulled      Pod container image "gcr.io/google_containers/pause:0.8.0" already present on machine
  Sat, 24 Oct 2015 17:08:13 +0000   Sat, 24 Oct 2015 17:08:13 +0000 1   {kubelet kube-node1}    implicitly required container POD   created     Created with docker id ea272dd36bd5
  Sat, 24 Oct 2015 17:08:13 +0000   Sat, 24 Oct 2015 17:08:13 +0000 1   {kubelet kube-node1}    implicitly required container POD   started     Started with docker id ea272dd36bd5
  Sat, 24 Oct 2015 17:08:13 +0000   Sat, 24 Oct 2015 17:08:13 +0000 1   {kubelet kube-node1}    spec.containers created     Created with docker id 6edbd6b9861d
  Sat, 24 Oct 2015 17:08:13 +0000   Sat, 24 Oct 2015 17:08:13 +0000 1   {kubelet kube-node1}    spec.containers started     Started with docker id 6edbd6b9861d

Као што видимо, Кубернетес је направио 2 реплике selenium-firefox-nodeи дистрибуирао их по целом кластеру. Под selenium-node-firefox-lc6qtје на кубе-чвору2, док је под selenium-node-firefox-y9qjpна кубе-чвору1.

Понављамо исти процес за наше Селениум Цхроме чворове.

Контролер репликације Цхроме чвора:

# selenium-node-chrome-rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
  name: selenium-node-chrome
  labels:
    app: selenium-node-chrome
spec:
  replicas: 2
  selector:
    app: selenium-node-chrome
  template:
    metadata:
      labels:
        app: selenium-node-chrome
    spec:
      containers:
      - name: selenium-node-chrome
        image: selenium/node-chrome
        ports:
          - containerPort: 5900
        env:
          - name: HUB_PORT_4444_TCP_ADDR
            value: "replace_with_service_ip"
          - name: HUB_PORT_4444_TCP_PORT
            value: "4444"

Примена:

[root@kube-master ~]# kubectl create -f selenium-node-chrome-rc.yaml
replicationcontrollers/selenium-node-chrome
[root@kube-master ~]# kubectl get rc
CONTROLLER              CONTAINER(S)            IMAGE(S)                SELECTOR                     REPLICAS
selenium-hub            selenium-hub            selenium/hub            name=selenium-hub            1
selenium-node-chrome    selenium-node-chrome    selenium/node-chrome    app=selenium-node-chrome     2
selenium-node-firefox   selenium-node-firefox   selenium/node-firefox   name=selenium-node-firefox   2
[root@kube-master ~]# kubectl get pods
NAME                          READY     STATUS    RESTARTS   AGE
selenium-hub-pilc8            1/1       Running   1          1h
selenium-node-chrome-9u1ld    1/1       Running   0          1m
selenium-node-chrome-mgi52    1/1       Running   0          1m
selenium-node-firefox-lc6qt   1/1       Running   0          11m
selenium-node-firefox-y9qjp   1/1       Running   0          11m

Окончање

У овом водичу смо поставили мали Кубернетес кластер од 3 сервера (1 главни контролер + 2 радника).

Користећи подове, РЦ-ове и услугу, успешно смо применили Селениум Грид који се састоји од централног чворишта и 4 чвора, омогућавајући програмерима да истовремено покрећу 4 Селенијум теста на кластеру.

Кубернетес је аутоматски заказао контејнере у целом кластеру.

Почетак рада са Кубернетес-ом на ЦентОС-у 7

Самоизлечење

Кубернетес аутоматски репрограмира подове на здраве сервере ако се један или више наших сервера поквари. У мом примеру, кубе-ноде2 тренутно покреће Селениум чвориште и 1 Селениум Фирефок чвориште.

[root@kube-node2 ~]# docker ps
CONTAINER ID        IMAGE                                  COMMAND                CREATED             STATUS              PORTS               NAMES
5617399f146c        selenium/node-firefox                  "/opt/bin/entry_poin   5 minutes ago       Up 5 minutes                            k8s_selenium-node-firefox.46e635d8_selenium-node-firefox-zmj1r_default_31c89517-7a75-11e5-8648-5600001611e0_baae8e00   
185230a3b431        gcr.io/google_containers/pause:0.8.0   "/pause"               5 minutes ago       Up 5 minutes                            k8s_POD.3805e8b7_selenium-node-firefox-zmj1r_default_31c89517-7a75-11e5-8648-5600001611e0_40f809df                     
fdd5834c249d        selenium/hub                           "/opt/bin/entry_poin   About an hour ago   Up About an hour                        k8s_selenium-hub.cb8bf0ed_selenium-hub-pilc8_default_6c98c1ff-7a68-11e5-8648-5600001611e0_5765e2c9                     
00e4ccb0bda8        gcr.io/google_containers/pause:0.8.0   "/pause"               About an hour ago   Up About an hour                        k8s_POD.3b3ee8b9_selenium-hub-pilc8_default_6c98c1ff-7a68-11e5-8648-5600001611e0_8398ac33  

Симулираћемо отказ сервера тако што ћемо искључити кубе-ноде2. После неколико минута, требало би да видите да су контејнери који су радили на кубе-ноде2 прераспоређени на кубе-ноде1, обезбеђујући минималан прекид услуге.

[root@kube-node1 ~]# docker ps
CONTAINER ID        IMAGE                                  COMMAND                CREATED             STATUS              PORTS               NAMES
5bad5f582698        selenium/hub                           "/opt/bin/entry_poin   19 minutes ago      Up 19 minutes                           k8s_selenium-hub.cb8bf0ed_selenium-hub-hycf2_default_fe9057cf-7a76-11e5-8648-5600001611e0_ccaad50a                     
dd1565a94919        selenium/node-firefox                  "/opt/bin/entry_poin   20 minutes ago      Up 20 minutes                           k8s_selenium-node-firefox.46e635d8_selenium-node-firefox-g28z5_default_fe932673-7a76-11e5-8648-5600001611e0_fc79f977   
2be1a316aa47        gcr.io/google_containers/pause:0.8.0   "/pause"               20 minutes ago      Up 20 minutes                           k8s_POD.3805e8b7_selenium-node-firefox-g28z5_default_fe932673-7a76-11e5-8648-5600001611e0_dc204ad2                     
da75a0242a9e        gcr.io/google_containers/pause:0.8.0   "/pause"               20 minutes ago      Up 20 minutes                           k8s_POD.3b3ee8b9_selenium-hub-hycf2_default_fe9057cf-7a76-11e5-8648-5600001611e0_1b10c0e7                              
c611b68330de        selenium/node-firefox                  "/opt/bin/entry_poin   33 minutes ago      Up 33 minutes                           k8s_selenium-node-firefox.46e635d8_selenium-node-firefox-8ylo2_default_31c8a8f3-7a75-11e5-8648-5600001611e0_922af821   
828031da6b3c        gcr.io/google_containers/pause:0.8.0   "/pause"               33 minutes ago      Up 33 minutes                           k8s_POD.3805e8b7_selenium-node-firefox-8ylo2_default_31c8a8f3-7a75-11e5-8648-5600001611e0_289cd555                     
caf4e725512e        selenium/node-chrome                   "/opt/bin/entry_poin   46 minutes ago      Up 46 minutes                           k8s_selenium-node-chrome.362a34ee_selenium-node-chrome-mgi52_default_392a2647-7a73-11e5-8648-5600001611e0_3c6e855a     
409a20770787        selenium/node-chrome                   "/opt/bin/entry_poin   46 minutes ago      Up 46 minutes                           k8s_selenium-node-chrome.362a34ee_selenium-node-chrome-9u1ld_default_392a15a4-7a73-11e5-8648-5600001611e0_ac3f0191     
7e2d942422a5        gcr.io/google_containers/pause:0.8.0   "/pause"               47 minutes ago      Up 47 minutes                           k8s_POD.3805e8b7_selenium-node-chrome-9u1ld_default_392a15a4-7a73-11e5-8648-5600001611e0_f5858b73                      
a3a65ea99a99        gcr.io/google_containers/pause:0.8.0   "/pause"               47 minutes ago      Up 47 minutes                           k8s_POD.3805e8b7_selenium-node-chrome-mgi52_default_392a2647-7a73-11e5-8648-5600001611e0_20a70ab6

Скалирање ваше селенске мреже

Скалирање ваше Селениум Грид-а је супер лако уз Кубернетес. Замислите да бих уместо 2 Фирефок чвора желео да покренем 4. Повећање се може извршити помоћу једне команде:

[root@kube-master ~]# kubectl scale rc selenium-node-firefox --replicas=4
scaled

[root@kube-master ~]# kubectl get rc
CONTROLLER              CONTAINER(S)            IMAGE(S)                SELECTOR                     REPLICAS
selenium-hub            selenium-hub            selenium/hub            name=selenium-hub            1
selenium-node-chrome    selenium-node-chrome    selenium/node-chrome    app=selenium-node-chrome     2
selenium-node-firefox   selenium-node-firefox   selenium/node-firefox   name=selenium-node-firefox   4

[root@kube-master ~]# kubectl get pods
NAME                          READY     STATUS    RESTARTS   AGE
selenium-hub-pilc8            1/1       Running   1          1h
selenium-node-chrome-9u1ld    1/1       Running   0          14m
selenium-node-chrome-mgi52    1/1       Running   0          14m
selenium-node-firefox-8ylo2   1/1       Running   0          40s
selenium-node-firefox-lc6qt   1/1       Running   0          24m
selenium-node-firefox-y9qjp   1/1       Running   0          24m
selenium-node-firefox-zmj1r   1/1       Running   0          40s

Почетак рада са Кубернетес-ом на ЦентОС-у 7


Инсталирајте Плеск на ЦентОС 7

Инсталирајте Плеск на ЦентОС 7

Користите другачији систем? Плеск је власничка контролна табла веб хоста која омогућава корисницима да управљају својим личним и/или клијентским веб локацијама, базама података

Како инсталирати Скуид проки на ЦентОС

Како инсталирати Скуид проки на ЦентОС

Скуид је популаран, бесплатни Линук програм који вам омогућава да креирате веб проки за прослеђивање. У овом водичу ћете видети како да инсталирате Скуид на ЦентОС да вас преокрене

Како инсталирати Лигхттпд (ЛЛМП Стацк) на ЦентОС 6

Како инсталирати Лигхттпд (ЛЛМП Стацк) на ЦентОС 6

Увод Лигхттпд је форк Апацхе-а који има за циљ да буде много мање интензиван према ресурсима. Лаган је, отуда и његово име, и прилично је једноставан за употребу. Инсталлин

Конфигурисање статичког умрежавања и ИПв6 на ЦентОС 7

Конфигурисање статичког умрежавања и ИПв6 на ЦентОС 7

ВУЛТР је недавно направио измене на њиховој страни, и сада би све требало да ради добро из кутије са омогућеним НетворкМанагер-ом. Ако желите да онемогућите

Модификовање Ицинга2 да користи модел Мастер/Цлиент на ЦентОС 6 или ЦентОС 7

Модификовање Ицинга2 да користи модел Мастер/Цлиент на ЦентОС 6 или ЦентОС 7

Ицинга2 је моћан систем за праћење, и када се користи у моделу мастер-цлиент, може да замени потребу за провером праћења заснованом на НРПЕ. Главни клијент

Како инсталирати Апацхе Цассандра 3.11.к на ЦентОС 7

Како инсталирати Апацхе Цассандра 3.11.к на ЦентОС 7

Користите другачији систем? Апацхе Цассандра је бесплатан систем за управљање НоСКЛ базом података отвореног кода који је дизајниран да обезбеди скалабилност, високу

Како инсталирати Мицровебер на ЦентОС 7

Како инсталирати Мицровебер на ЦентОС 7

Користите другачији систем? Мицровебер је ЦМС и онлајн продавница отвореног кода. Мицровебер изворни код се налази на ГитХуб-у. Овај водич ће вам показати

Како инсталирати Маттермост 4.1 на ЦентОС 7

Како инсталирати Маттермост 4.1 на ЦентОС 7

Користите другачији систем? Маттермост је опен соурце алтернатива Слацк СААС сервису за размену порука. Другим речима, са Маттермостом, ца

Креирање мреже Минецрафт сервера са БунгееЦорд-ом на Дебиан 8, Дебиан 9 или ЦентОС 7

Креирање мреже Минецрафт сервера са БунгееЦорд-ом на Дебиан 8, Дебиан 9 или ЦентОС 7

Шта вам треба Вултр ВПС са најмање 1 ГБ РАМ-а. ССХ приступ (са роот/административним привилегијама). Корак 1: Инсталирање БунгееЦорд-а Прво прво

Омогућава шифровање на Плеску

Омогућава шифровање на Плеску

Плеск контролна табла има веома лепу интеграцију за Летс Енцрипт. Летс Енцрипт је један од јединих ССЛ провајдера који у потпуности издају сертификате

Омогућава шифровање на цПанелу

Омогућава шифровање на цПанелу

Летс Енцрипт је ауторитет за сертификацију посвећен бесплатном пружању ССЛ сертификата. цПанел је направио уредну интеграцију тако да ви и ваш клијент

Како инсталирати Цонцрете5 на ЦентОС 7

Како инсталирати Цонцрете5 на ЦентОС 7

Користите другачији систем? Цонцрете5 је ЦМС отвореног кода који нуди многе карактеристичне и корисне функције које помажу уредницима да лако производе садржај и

Како инсталирати плочу за преглед на ЦентОС 7

Како инсталирати плочу за преглед на ЦентОС 7

Користите другачији систем? Ревиев Боард је бесплатан алат отвореног кода за преглед изворног кода, документације, слика и још много тога. То је софтвер заснован на вебу

Подесите ХТТП аутентификацију помоћу Нгинк-а на ЦентОС 7

Подесите ХТТП аутентификацију помоћу Нгинк-а на ЦентОС 7

У овом водичу ћете научити како да подесите ХТТП аутентификацију за Нгинк веб сервер који ради на ЦентОС 7. Захтеви Да бисте започели, требаће вам

Како инсталирати ИОУРЛС на ЦентОС 7

Како инсталирати ИОУРЛС на ЦентОС 7

ИОУРЛС (Иоур Овн УРЛ Схортенер) је апликација за скраћивање УРЛ-ова отвореног кода и аналитику података. У овом чланку ћемо покрити процес инсталације

Како инсталирати и конфигурисати АрангоДБ на ЦентОС 7

Како инсталирати и конфигурисати АрангоДБ на ЦентОС 7

Користите другачији систем? Увод АрангоДБ је НоСКЛ база података отвореног кода са флексибилним моделом података за документе, графиконе и кључ-вредности. То је

Коришћење Етцкеепер-а за контролу верзија /етц

Коришћење Етцкеепер-а за контролу верзија /етц

Увод Директоријум /етц/ игра кључну улогу у начину на који Линук систем функционише. Разлог за то је што је скоро свака конфигурација система

Зашто би требало да користите ССХФС? Како монтирати удаљени систем датотека са ССХФС на ЦентОС 6

Зашто би требало да користите ССХФС? Како монтирати удаљени систем датотека са ССХФС на ЦентОС 6

Многи системски администратори управљају великим количинама сервера. Када датотекама треба приступити на различитим серверима, пријављивање на сваки појединачно ца

Подешавање сервера Халф Лифе 2 на ЦентОС 6

Подешавање сервера Халф Лифе 2 на ЦентОС 6

Овај водич ће покрити процес инсталирања Халф Лифе 2 сервера за игре на ЦентОС 6 систем. Корак 1: Инсталирање предуслова Да бисте подесили оу

Како инсталирати Ларавел ГитСцрум на ЦентОС 7

Како инсталирати Ларавел ГитСцрум на ЦентОС 7

Ларавел ГитСцрум или ГитСцрум је алатка за продуктивност отвореног кода дизајнирана да помогне развојним тимовима да имплементирају Сцрум методологију на сличан начин т

Успон машина: Примене вештачке интелигенције у стварном свету

Успон машина: Примене вештачке интелигенције у стварном свету

Вештачка интелигенција није у будућности, она је овде управо у садашњости. У овом блогу Прочитајте како су апликације вештачке интелигенције утицале на различите секторе.

ДДОС напади: кратак преглед

ДДОС напади: кратак преглед

Да ли сте и ви жртва ДДОС напада и збуњени сте методама превенције? Прочитајте овај чланак да бисте решили своја питања.

Да ли сте се икада запитали како хакери зарађују новац?

Да ли сте се икада запитали како хакери зарађују новац?

Можда сте чули да хакери зарађују много новца, али да ли сте се икада запитали како зарађују толики новац? Хајде да причамо.

Гоогле-ови револуционарни изуми који ће вам олакшати живот.

Гоогле-ови револуционарни изуми који ће вам олакшати живот.

Да ли желите да видите револуционарне изуме Гугла и како су ти изуми променили живот сваког људског бића данас? Затим читајте на блогу да бисте видели Гооглеове изуме.

Фридаи Ессентиал: Шта се десило са аутомобилима које покреће вештачка интелигенција?

Фридаи Ессентиал: Шта се десило са аутомобилима које покреће вештачка интелигенција?

Концепт самовозећих аутомобила који путују на путеве уз помоћ вештачке интелигенције је сан који већ неко време имамо. Али упркос неколико обећања, њих нема нигде. Прочитајте овај блог да сазнате више…

Технолошка сингуларност: далека будућност људске цивилизације?

Технолошка сингуларност: далека будућност људске цивилизације?

Како се наука развија великом брзином, преузимајући многе наше напоре, расте и ризик да се подвргнемо необјашњивој сингуларности. Прочитајте шта би сингуларност могла да значи за нас.

Еволуција складиштења података – Инфографика

Еволуција складиштења података – Инфографика

Методе складиштења података су се развијале можда од рођења података. Овај блог покрива еволуцију складиштења података на основу инфографике.

Функционалности слојева референтне архитектуре великих података

Функционалности слојева референтне архитектуре великих података

Прочитајте блог да бисте на најједноставнији начин упознали различите слојеве у архитектури великих података и њихове функционалности.

6 невероватних предности поседовања паметних кућних уређаја у нашим животима

6 невероватних предности поседовања паметних кућних уређаја у нашим животима

У овом дигиталном свету, паметни кућни уређаји постали су кључни део живота. Ево неколико невероватних предности паметних кућних уређаја о томе како они чине наш живот вредним живљења и једноставнијим.

Ажурирање додатка за мацОС Цаталина 10.15.4 изазива више проблема него што их решава

Ажурирање додатка за мацОС Цаталина 10.15.4 изазива више проблема него што их решава

Недавно је Аппле издао мацОС Цаталина 10.15.4 додатак за исправку проблема, али изгледа да ажурирање изазива више проблема који доводе до квара Мац машина. Прочитајте овај чланак да бисте сазнали више