Bermula dengan Kubernetes di CentOS 7

Kubernetes adalah platform sumber terbuka yang dikembangkan oleh Google untuk menguruskan aplikasi kontena di sekumpulan pelayan. Ini dibangun berdasarkan satu setengah dekad pengalaman yang dimiliki oleh Google dengan menjalankan kumpulan kontena dalam skala besar , dan menyediakan infrastruktur gaya Google kepada pemaju, memanfaatkan projek sumber terbuka terbaik, seperti:

  • Docker : teknologi wadah aplikasi.
  • Dll : penyimpanan data nilai-kunci yang diedarkan yang menguruskan maklumat seluruh kluster dan menyediakan penemuan perkhidmatan.
  • Flannel : kain rangkaian overlay yang membolehkan penyambungan kontena di beberapa pelayan.

Kubernetes membolehkan pemaju menentukan infrastruktur aplikasi mereka secara deklaratif melalui fail dan abstraksi YAML seperti Pod, RC dan Perkhidmatan (lebih lanjut mengenai ini kemudian) dan memastikan bahawa kluster yang mendasari sesuai dengan keadaan yang ditentukan pengguna setiap masa.

Beberapa ciri-cirinya termasuk:

  • Penjadualan automatik sumber sistem dan penempatan kontena aplikasi secara automatik di sekumpulan.
  • Aplikasi penskalaan dengan satu perintah.
  • Berkemas kini dengan sifar waktu henti.
  • Penyembuhan diri: penjadualan semula aplikasi secara automatik jika pelayan gagal, restart bekas secara automatik, pemeriksaan kesihatan.

Langkau ke Pemasangan jika anda sudah biasa dengan Kubernetes.

Konsep asas

Kubernetes menawarkan abstraksi berikut (unit logik) kepada pemaju:

  • Pod.
  • Pengawal replikasi.
  • Label.
  • Perkhidmatan.

Pod

Ini adalah unit asas beban kerja Kubernetes. Pod memodelkan "hos logik" khusus aplikasi dalam persekitaran berkontena. Dalam istilah awam, ia memodelkan sekumpulan aplikasi atau perkhidmatan yang biasa dijalankan pada pelayan yang sama di dunia pra-kontena. Kontena di dalam pod berkongsi ruang nama rangkaian yang sama dan dapat berkongsi jumlah data juga.

Pengawal replikasi

Pod sangat bagus untuk mengelompokkan beberapa bekas ke dalam unit aplikasi logik, tetapi tidak menawarkan replikasi atau penjadualan semula sekiranya berlaku kegagalan pelayan.

Di sinilah pengawal replikasi atau RC berguna. RC memastikan bahawa sebilangan pod perkhidmatan tertentu selalu berjalan di seluruh kelompok.

Label

Mereka adalah metadata nilai-kunci yang dapat dilampirkan ke sumber Kubernetes (pod, RC, perkhidmatan, nod, ...).

Perkhidmatan

Pod dan pengawal replikasi sangat bagus untuk menyebarkan dan menyebarkan aplikasi di seluruh kluster, tetapi pod mempunyai IP sementara yang berubah semasa penjadualan semula atau restart kontena.

Perkhidmatan Kubernetes menyediakan titik akhir yang stabil (tetap IP + port maya mengikat pelayan host) untuk sekumpulan pod yang dikendalikan oleh pengawal replikasi.

Kluster Kubernetes

Dalam bentuk termudah, kluster Kubernetes disusun oleh dua jenis nod:

  • 1 Kubernetes master.
  • N Kubernetes nod.

Tuan Kubernetes

Master Kubernetes adalah unit kawalan keseluruhan kluster.

Komponen utama master adalah:

  • Dll: kedai data yang tersedia di seluruh dunia yang menyimpan maklumat mengenai kluster dan perkhidmatan serta aplikasi yang berjalan di kluster.
  • Pelayan API Kube: ini adalah pusat pengurusan utama kluster Kubernetes dan memperlihatkan antara muka RESTful.
  • Pengawal pengawal: mengendalikan replikasi aplikasi yang dikendalikan oleh pengawal replikasi.
  • Penjadual: mengesan penggunaan sumber di seluruh kluster dan memberikan beban kerja dengan sewajarnya.

Nod Kubernetes

Node Kubernetes adalah pelayan pekerja yang bertanggungjawab untuk menjalankan pod.

Komponen utama nod adalah:

  • Docker: daemon yang menjalankan bekas aplikasi yang ditentukan dalam pod.
  • Kubelet: unit kawalan untuk pod dalam sistem tempatan.
  • Kube-proksi: proksi rangkaian yang memastikan perutean yang betul untuk perkhidmatan Kubernetes.

Pemasangan

Dalam panduan ini, kami akan membuat kluster 3 nod menggunakan pelayan CentOS 7:

  • 1 master Kubernetes (kube-master)
  • 2 nod Kubernetes (kube-node1, kube-node2)

Anda boleh menambah sebilangan besar nod yang anda inginkan kemudian dengan mengikuti prosedur pemasangan yang sama untuk nod Kubernetes.

Semua nod

Konfigurasikan nama host dan /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

Lumpuhkan firewalld:

systemctl disable firewalld
systemctl stop firewalld

Tuan Kubernetes

Pasang pakej induk Kubernetes:

yum install etcd kubernetes-master

Konfigurasi:

# /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"

Mulakan Dll:

systemctl start etcd

Pasang dan konfigurasikan kain rangkaian overlay Flannel (ini diperlukan supaya kontena yang berjalan di pelayan yang berbeza dapat saling melihat):

yum install flannel

Buat fail konfigurasi Flannel ( flannel-config.json):

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

Tetapkan konfigurasi Flannel di pelayan Etcd:

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

Arahkan Flannel ke pelayan Etcd:

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

Aktifkan perkhidmatan sehingga mereka mula boot:

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

But semula pelayan.

Nod Kubernetes

Pasang pakej nod Kubernetes:

yum install docker kubernetes-node

Dua langkah seterusnya akan mengkonfigurasi Docker untuk menggunakan overlayfs untuk prestasi yang lebih baik. Untuk maklumat lebih lanjut, lawati catatan blog ini :

Padamkan direktori storan docker semasa:

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

Tukar fail konfigurasi:

# /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

Konfigurasikan kube-node1 untuk menggunakan master kami yang telah dikonfigurasi sebelumnya:

# /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"

Pasang dan konfigurasikan kain rangkaian overlay Flannel (sekali lagi - ini diperlukan supaya kontena yang berjalan di pelayan yang berbeza dapat saling melihat):

yum install flannel

Arahkan Flannel ke pelayan Etcd:

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

Dayakan perkhidmatan:

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

But semula pelayan.

Uji pelayan Kubernetes anda

Setelah semua pelayan reboot, periksa apakah kluster Kubernetes anda beroperasi:

[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

Contoh: Menggunakan grid Selenium menggunakan Kubernetes

Selenium adalah rangka untuk mengautomasikan penyemak imbas untuk tujuan pengujian. Ini adalah alat yang ampuh dari gudang mana-mana pembangun web.

Selenium grid membolehkan pelaksanaan ujian jarak jauh yang berskala dan selari melintasi sekumpulan nod Selenium yang disambungkan ke pusat Selenium tengah.

Oleh kerana node Selenium tidak bernegara sendiri dan jumlah nod yang kita jalankan fleksibel, bergantung pada beban kerja pengujian kami, ini adalah aplikasi calon yang tepat untuk digunakan pada kluster Kubernetes.

Di bahagian seterusnya, kami akan menggunakan grid yang terdiri daripada 5 bekas aplikasi:

  • 1 pusat Selenium pusat yang akan menjadi titik akhir terpencil yang akan dihubungkan oleh ujian kami.
  • 2 nod Selenium yang menjalankan Firefox.
  • 2 nod Selenium yang menjalankan Chrome.

Strategi penyebaran

Untuk mengurus replikasi dan penyembuhan diri secara automatik, kami akan membuat pengawal replikasi Kubernetes untuk setiap jenis bekas aplikasi yang kami senaraikan di atas.

Untuk menyediakan pembangun yang menjalankan ujian dengan titik akhir hub Selenium yang stabil, kami akan membuat perkhidmatan Kubernetes yang disambungkan ke pengawal replikasi hub.

Hab selenium

Pengawal ulangan
# 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

Penerapan:

[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

Di sini kita dapat melihat bahawa Kubernetes telah meletakkan bekas selenium-hub saya di kube-node2.

Perkhidmatan
# 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

Penerapan:

[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

Setelah menggunakan perkhidmatan, perkhidmatan dapat dicapai dari:

  • Mana-mana nod Kubernetes, melalui IP maya 10.254.124.73 dan port 4444.
  • Rangkaian luaran, melalui IP awam nod Kubernetes mana-mana, di port 30000.

Bermula dengan Kubernetes di CentOS 7Bermula dengan Kubernetes di CentOS 7 (menggunakan IP awam dari nod Kubernetes lain)

Nod selenium

Pengawal replikasi nod Firefox:

# 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"

Penerapan:

Menggantikan replace_with_service_ipdalam selenium-node-firefox-rc.yamldengan perkhidmatan hab Selenium IP sebenar, dalam kes ini 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

Seperti yang kita lihat, Kubernetes telah membuat 2 replika selenium-firefox-nodedan telah menyebarkannya ke seluruh kelompok. Pod selenium-node-firefox-lc6qtberada di kube-node2, sementara pod selenium-node-firefox-y9qjpberada di kube-node1.

Kami mengulangi proses yang sama untuk nod Selenium Chrome kami.

Pengawal replikasi nod Chrome:

# 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"

Penerapan:

[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

Mengakhiri

Dalam panduan ini, kami telah menyediakan kumpulan Kubernetes kecil dari 3 pelayan (1 pengawal utama + 2 pekerja).

Dengan menggunakan pod, RC dan perkhidmatan, kami berjaya menggunakan Selenium Grid yang terdiri daripada pusat pusat dan 4 nod, yang membolehkan pembangun menjalankan 4 ujian Selenium serentak pada satu masa di kluster.

Kubernetes menjadualkan bekas secara automatik ke seluruh kluster.

Bermula dengan Kubernetes di CentOS 7

Penyembuhan diri

Kubernetes menjadualkan semula pod secara automatik ke pelayan yang sihat sekiranya satu atau lebih pelayan kami turun. Dalam contoh saya, kube-node2 kini menjalankan pod hub Selenium dan 1 pod nod Selenium Firefox.

[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  

Kami akan mensimulasikan kegagalan pelayan dengan mematikan kube-node2. Setelah beberapa minit, anda akan melihat bahawa bekas yang berjalan di kube-node2 telah dijadualkan semula ke kube-node1, memastikan gangguan perkhidmatan minimum.

[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

Meningkatkan Selenium Grid anda

Menambah Selenium Grid anda sangat mudah dengan Kubernetes. Bayangkan bahawa bukannya 2 nod Firefox, saya ingin menjalankan 4. Peningkatan skala boleh dilakukan dengan satu arahan:

[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

Bermula dengan Kubernetes di CentOS 7



Leave a Comment

Cara Pasang dan Konfigur CyberPanel pada Server CentOS 7 anda

Cara Pasang dan Konfigur CyberPanel pada Server CentOS 7 anda

Menggunakan Sistem Berbeza? Pengenalan CyberPanel adalah salah satu panel kawalan pertama di pasaran yang merupakan sumber terbuka dan menggunakan OpenLiteSpeed. Apa itu

Cara Memasang Apache Maven 3.5 di CentOS 7

Cara Memasang Apache Maven 3.5 di CentOS 7

Apache Maven adalah alat pengurusan projek perisian sumber terbuka dan bebas yang banyak digunakan untuk menyebarkan aplikasi berbasis Java. Prasyarat yang baru

Cara Memasang FFmpeg di CentOS

Cara Memasang FFmpeg di CentOS

FFmpeg adalah penyelesaian sumber terbuka yang popular untuk merakam, menukar, dan menstrim audio dan video, yang banyak digunakan dalam semua jenis perkhidmatan streaming dalam talian. Saya

Cara Memasang Backdrop CMS 1.8.0 pada VPS CentOS 7 LAMP

Cara Memasang Backdrop CMS 1.8.0 pada VPS CentOS 7 LAMP

Menggunakan Sistem Berbeza? Backdrop CMS 1.8.0 adalah Sistem Pengurusan Kandungan (CMS) sumber mudah alih, mudah alih, percuma dan terbuka yang membolehkan kami

Cara Pasang AirSonic pada CentOS 7

Cara Pasang AirSonic pada CentOS 7

Menggunakan Sistem Berbeza? AirSonic adalah pelayan streaming media sumber terbuka dan terbuka. Dalam tutorial ini, saya akan membimbing anda melalui proses penyebaran a

Siapkan Komposer Untuk Ketergantungan PHP Di CentOS 6

Siapkan Komposer Untuk Ketergantungan PHP Di CentOS 6

Pengenalan Komposer adalah pengurus pergantungan yang popular untuk PHP yang dapat mempermudah pemasangan dan kemas kini perpustakaan yang diperlukan untuk projek anda

Pasang RockMongo di CentOS 7

Pasang RockMongo di CentOS 7

RockMongo adalah alat Pengurusan MongoDB berasaskan web yang serupa dengan alat Pengurusan MySQL: phpMyAdmin. Tutorial ini akan merangkumi proses installin

Bagaimana untuk Menggunakan Aplikasi Web Teras NET pada CentOS 7

Bagaimana untuk Menggunakan Aplikasi Web Teras NET pada CentOS 7

.NET NET adalah rangka kerja pembangunan merentas platform terbuka yang disusun oleh Microsoft dan masyarakat NET yang semakin berkembang. Dengan bantuan .NE

Memasang Netdata di CentOS 7

Memasang Netdata di CentOS 7

Menggunakan Sistem yang berbeza? Netdata adalah bintang yang semakin meningkat dalam bidang pemantauan metrik sistem masa nyata. Berbanding dengan alat lain yang serupa, Netdata:

Cara Memasang Pelayan Starbound di CentOS 7

Cara Memasang Pelayan Starbound di CentOS 7

Menggunakan Sistem yang berbeza? Dalam tutorial ini, saya akan menerangkan cara menyediakan pelayan Starbound di CentOS 7. Prasyarat Anda perlu memiliki permainan ini untuk anda

Cara Memasang Django di CentOS 7

Cara Memasang Django di CentOS 7

Django adalah rangka kerja Python yang popular untuk menulis aplikasi web. Dengan Django, anda dapat membina aplikasi dengan lebih cepat, tanpa mencipta semula roda. Sekiranya anda mahu

Sediakan Pelayan multipemain SA-MP San Andreas di CentOS 6

Sediakan Pelayan multipemain SA-MP San Andreas di CentOS 6

Selamat datang ke tutorial Vultr yang lain. Di sini, anda akan belajar cara memasang dan menjalankan pelayan SAMP. Panduan ini ditulis untuk CentOS 6. Prasyarat Anda akan hadir

Memasang Revive Adserver di CentOS 7

Memasang Revive Adserver di CentOS 7

Revive Adserver adalah sistem penayangan iklan sumber terbuka dan bebas yang dapat digunakan untuk mengelola iklan di laman web, dalam aplikasi, dan / atau dalam pemutar video. Dalam artikel ini,

Cara Memasang Parse Server di CentOS 7

Cara Memasang Parse Server di CentOS 7

Parse Server adalah alternatif sumber terbuka untuk perkhidmatan backend Parse yang sedang ditutup. Sekiranya anda peminat perkhidmatan ini, anda masih boleh menikmati perkhidmatan ini

Pasang Elgg di CentOS 7

Pasang Elgg di CentOS 7

Menggunakan Sistem Berbeza? Elgg adalah mesin rangkaian sosial sumber terbuka yang membolehkan penciptaan persekitaran sosial seperti rangkaian sosial kampus dan

Cara Memasang dan Mengkonfigurasi Caddy di CentOS 7

Cara Memasang dan Mengkonfigurasi Caddy di CentOS 7

Pengenalan Caddy adalah program pelayan web yang muncul dengan sokongan asli untuk HTTP / 2 dan HTTPS automatik. Dengan kemudahan penggunaan dan keselamatan, Caddy dapat b

Terapkan Kubernetes Dengan Kubeadm di CentOS 7

Terapkan Kubernetes Dengan Kubeadm di CentOS 7

Gambaran Keseluruhan Artikel ini dimaksudkan untuk membantu anda mendapatkan cluster Kubernet dan berjalan dengan kubeadm dalam waktu singkat. Panduan ini akan menggunakan dua pelayan, di

Tingkatkan Produktiviti dengan Z dan Zsh di CentOS

Tingkatkan Produktiviti dengan Z dan Zsh di CentOS

Pengenalan Mengendalikan sistem Linux bermaksud seseorang menggunakan baris perintah lebih kerap daripada tidak. Perlu menaip nama direktori panjang berulang-ulang sebagai wel

Cara Memasang OpenCart Pada Pelayan LEMP Vultr

Cara Memasang OpenCart Pada Pelayan LEMP Vultr

OpenCart adalah penyelesaian keranjang belanja sumber terbuka yang popular yang direka untuk memberikan fungsi, kemudahan penggunaan, dan penampilan yang sangat baik. Dengan OpenCart, anda pasti

Siapkan Sails.js untuk Pembangunan di CentOS 7

Siapkan Sails.js untuk Pembangunan di CentOS 7

Menggunakan Sistem Berbeza? Pengenalan Sails.js adalah rangka kerja MVC untuk Node.js, mirip dengan Ruby on Rails. Ia menjadikan untuk mengembangkan aplikasi moden

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

6 Perkara Yang Sangat Menggila Tentang Nintendo Switch

6 Perkara Yang Sangat Menggila Tentang Nintendo Switch

Ramai daripada anda tahu Switch akan keluar pada Mac 2017 dan ciri baharunya. Bagi yang tidak tahu, kami telah menyediakan senarai ciri yang menjadikan 'Tukar' sebagai 'gajet yang mesti ada'.

Janji Teknologi Yang Masih Tidak Ditepati

Janji Teknologi Yang Masih Tidak Ditepati

Adakah anda menunggu gergasi teknologi memenuhi janji mereka? semak apa yang masih belum dihantar.

Fungsi Lapisan Seni Bina Rujukan Data Besar

Fungsi Lapisan Seni Bina Rujukan Data Besar

Baca blog untuk mengetahui lapisan berbeza dalam Seni Bina Data Besar dan fungsinya dengan cara yang paling mudah.

Bagaimana AI Boleh Mengambil Automasi Proses ke Tahap Seterusnya?

Bagaimana AI Boleh Mengambil Automasi Proses ke Tahap Seterusnya?

Baca ini untuk mengetahui cara Kecerdasan Buatan semakin popular di kalangan syarikat berskala kecil dan cara ia meningkatkan kebarangkalian untuk menjadikan mereka berkembang dan memberikan pesaing mereka kelebihan.

CAPTCHA: Berapa Lama Ia Boleh Kekal Sebagai Teknik Berdaya maju Untuk Perbezaan Manusia-AI?

CAPTCHA: Berapa Lama Ia Boleh Kekal Sebagai Teknik Berdaya maju Untuk Perbezaan Manusia-AI?

CAPTCHA telah menjadi agak sukar untuk diselesaikan oleh pengguna dalam beberapa tahun kebelakangan ini. Adakah ia dapat kekal berkesan dalam pengesanan spam dan bot pada masa hadapan?

Keunikan Teknologi: Masa Depan Tamadun Manusia yang Jauh?

Keunikan Teknologi: Masa Depan Tamadun Manusia yang Jauh?

Apabila Sains Berkembang pada kadar yang pantas, mengambil alih banyak usaha kita, risiko untuk menundukkan diri kita kepada Ketunggalan yang tidak dapat dijelaskan juga meningkat. Baca, apakah makna ketunggalan bagi kita.

Teleperubatan Dan Penjagaan Kesihatan Jauh: Masa Depan Ada Di Sini

Teleperubatan Dan Penjagaan Kesihatan Jauh: Masa Depan Ada Di Sini

Apakah teleperubatan, penjagaan kesihatan jauh dan impaknya kepada generasi akan datang? Adakah ia tempat yang baik atau tidak dalam situasi pandemik? Baca blog untuk mencari paparan!

Pernahkah Anda Terfikir Bagaimana Penggodam Mendapatkan Wang?

Pernahkah Anda Terfikir Bagaimana Penggodam Mendapatkan Wang?

Anda mungkin pernah mendengar bahawa penggodam memperoleh banyak wang, tetapi pernahkah anda terfikir bagaimana mereka memperoleh wang seperti itu? Mari berbincang.

Kemas Kini Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Isu Daripada Penyelesaian

Kemas Kini Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Isu Daripada Penyelesaian

Baru-baru ini Apple mengeluarkan macOS Catalina 10.15.4 kemas kini tambahan untuk menyelesaikan masalah tetapi nampaknya kemas kini itu menyebabkan lebih banyak masalah yang membawa kepada pemusnahan mesin mac. Baca artikel ini untuk mengetahui lebih lanjut