Byrjaðu með Kubernetes á CentOS 7

Kubernetes er opinn uppspretta vettvangur þróaður af Google til að stjórna gámaforritum yfir þyrping netþjóna. Það byggir á einum og hálfum áratug af reynslu sem Google hefur af því að keyra gámaklasa í stærðargráðu og veitir þróunaraðilum innviði í stíl Google, sem nýtir sér bestu opinn uppspretta verkefni, eins og:

  • Docker : forritagámatækni.
  • O.s.frv .: dreifð lykilgildisgagnageymsla sem heldur utan um upplýsingar um klasa og veitir þjónustuuppgötvun.
  • Flannel : yfirborðsnetkerfi sem gerir gámatengingu kleift á marga netþjóna.

Kubernetes gerir forriturum kleift að skilgreina innviði forrita sinna með yfirlýsandi hætti í gegnum YAML skrár og útdrætti eins og Pods, RCs og Services (meira um þetta síðar) og tryggir að undirliggjandi þyrping passi við notendaskilgreint ástand á hverjum tíma.

Sumir eiginleikar þess innihalda:

  • Sjálfvirk tímasetning kerfisauðlinda og sjálfvirk staðsetning forritagáma yfir klasa.
  • Stækkaðu forrit á flugi með einni skipun.
  • Vinsælar uppfærslur án niður í miðbæ.
  • Sjálfslækning: sjálfvirk endurskipulagning á forriti ef miðlari bilar, sjálfvirk endurræsing gáma, heilsufarsskoðun.

Farðu í uppsetningu ef þú þekkir Kubernetes nú þegar.

Grunnhugtök

Kubernetes býður forriturum eftirfarandi útdrætti (rökréttar einingar):

  • Belg.
  • Eftirritunarstýringar.
  • Merki.
  • Þjónusta.

Belg

Það er grunneining Kubernetes vinnuálags. Bekkur mótar forritssértækan „rökréttan gestgjafa“ í gámaumhverfi. Í leikmannaskilmálum, þá er það líkan af hópi forrita eða þjónustu sem keyrðu áður á sama netþjóni í forgámaheiminum. Gámar inni í hólf deila sama nafnrými netsins og geta einnig deilt gagnamagni.

Eftirritunarstýringar

Pods eru frábærir til að flokka marga gáma í rökréttar forritaeiningar, en þeir bjóða ekki upp á afritun eða endurskipulagningu ef miðlari bilar.

Þetta er þar sem afritunarstýring eða RC kemur sér vel. RC tryggir að fjöldi fræbelgja tiltekinnar þjónustu sé alltaf í gangi yfir þyrpinguna.

Merki

Þetta eru lykilgildi lýsigögn sem hægt er að tengja við hvaða Kubernetes tilföng sem er (belg, RC, þjónustur, hnútar, ...).

Þjónusta

Pods og afritunarstýringar eru frábærir til að dreifa og dreifa forritum yfir þyrping, en fræbelgir eru með skammvinn IP-tölu sem breytast við endurskipulagningu eða endurræsingu gáma.

Kubernetes þjónusta veitir stöðugan endapunkt (fast sýndar-IP + tengibinding við hýsingarþjóna) fyrir hóp belg sem stjórnað er af afritunarstýringu.

Kubernetes þyrping

Í sinni einföldustu mynd er Kubernetes þyrping samsett af tvenns konar hnútum:

  • 1 Kubernetes meistari.
  • N Kubernetes hnútar.

Kubernetes meistari

Kubernetes meistarinn er stjórneining alls klasans.

Helstu þættir meistarans eru:

  • Etcd: gagnaverslun sem er fáanleg á heimsvísu sem geymir upplýsingar um klasann og þjónustuna og forritin sem keyra á klasanum.
  • Kube API þjónn: þetta er aðalstjórnunarmiðstöð Kubernetes klasans og hann afhjúpar RESTful viðmót.
  • Stýringarstjóri: sér um afritun forrita sem stjórnað er af afritunarstýringum.
  • Tímaáætlun: fylgist með nýtingu auðlinda yfir klasann og úthlutar vinnuálagi í samræmi við það.

Kubernetes hnútur

Kubernetes hnúturinn eru vinnuþjónar sem bera ábyrgð á að keyra belg.

Helstu þættir hnúts eru:

  • Docker: púki sem keyrir forritagáma sem eru skilgreindir í belgjum.
  • Kubelet: stýrieining fyrir belg í staðbundnu kerfi.
  • Kube-proxy: netþjónn sem tryggir rétta leið fyrir Kubernetes þjónustu.

Uppsetning

Í þessari handbók munum við búa til 3 hnúta þyrping með CentOS 7 netþjónum:

  • 1 Kubernetes master (kube-master)
  • 2 Kubernetes hnútar (kube-node1, kube-node2)

Þú getur bætt við eins mörgum aukahnútum og þú vilt síðar með því að fylgja sömu uppsetningaraðferð fyrir Kubernetes hnúta.

Allir hnútar

Stilltu hýsingarnöfn og /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

Slökktu á eldvegg:

systemctl disable firewalld
systemctl stop firewalld

Kubernetes meistari

Settu upp Kubernetes aðalpakka:

yum install etcd kubernetes-master

Stillingar:

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

Byrja osfrv:

systemctl start etcd

Settu upp og stilltu Flannel yfirborðsnetkerfi (þetta er nauðsynlegt svo að gámar sem keyra á mismunandi netþjónum geti séð hver annan):

yum install flannel

Búðu til Flannel stillingarskrá ( flannel-config.json):

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

Stilltu Flannel stillingar á Etcd þjóninum:

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

Beindu Flannel á Etcd netþjóninn:

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

Virkjaðu þjónustu þannig að þær byrji við ræsingu:

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

Endurræstu miðlara.

Kubernetes hnútur

Settu upp Kubernetes hnútapakka:

yum install docker kubernetes-node

Næstu tvö skref munu stilla Docker til að nota yfirlög fyrir betri afköst. Fyrir frekari upplýsingar heimsækja þessa bloggfærslu :

Eyða núverandi docker geymsluskrá:

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

Breyta stillingarskrám:

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

Stilltu kube-node1 til að nota áður stilltan meistara okkar:

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

Settu upp og stilltu Flannel yfirborðsnetkerfi (aftur - þetta er nauðsynlegt svo að gámar sem keyra á mismunandi netþjónum geti séð hver annan):

yum install flannel

Beindu Flannel á Etcd netþjóninn:

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

Virkja þjónustu:

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

Endurræstu netþjóninn.

Prófaðu Kubernetes netþjóninn þinn

Eftir að allir netþjónarnir hafa endurræst, athugaðu hvort Kubernetes þyrpingin þín sé starfhæf:

[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

Dæmi: Að setja upp selennet með Kubernetes

Selen er rammi til að gera vafra sjálfvirkan í prófunarskyni. Það er öflugt tæki í vopnabúr hvers vefhönnuðar.

Selenium rist gerir stigstærð og samhliða fjarframkvæmd prófana yfir þyrping af Selenium hnútum sem eru tengdir miðlægum Selenium miðstöð.

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

Hér getum við séð að Kubernetes hefur sett selen-hub gáminn minn á kube-node2.

Þjónusta
# 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

Dreifing:

[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

Eftir að þjónustunni hefur verið dreift verður hægt að ná í hana frá:

  • Hvaða Kubernetes hnút sem er, í gegnum sýndar-IP 10.254.124.73 og höfnina 4444.
  • Ytri netkerfi, í gegnum opinbera IP-tölu Kubernetes hnúta, á höfn 30000.

Byrjaðu með Kubernetes á CentOS 7Byrjaðu með Kubernetes á CentOS 7 (með því að nota opinbera IP annars Kubernetes hnút)

Selen hnúðar

Firefox hnútafritunarstýring:

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

Dreifing:

Skipta replace_with_service_ipí selenium-node-firefox-rc.yamlvið raunverulegan Selen miðstöð þjónustu IP, í þessu tilfelli 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

Eins og við sjáum hefur Kubernetes búið til 2 eftirlíkingar af selenium-firefox-nodeog það hefur dreift þeim um þyrpinguna. Pod selenium-node-firefox-lc6qter á kube-node2, en pod selenium-node-firefox-y9qjper á kube-node1.

Við endurtökum sama ferli fyrir Selenium Chrome hnúðana okkar.

Chrome hnútafritunarstýring:

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

Dreifing:

[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

Klára

Í þessari handbók höfum við sett upp lítinn Kubernetes þyrping með 3 netþjónum (1 aðalstýring + 2 starfsmenn).

Með því að nota belg, RC og þjónustu, höfum við sett upp selennet sem samanstendur af miðlægri miðstöð og 4 hnútum, sem gerir forriturum kleift að keyra 4 samhliða selenpróf í einu á klasanum.

Kubernetes tímasetti gámana sjálfkrafa yfir allan klasann.

Byrjaðu með Kubernetes á CentOS 7

Sjálfslækning

Kubernetes endurskipuleggja belg sjálfkrafa á heilbrigða netþjóna ef einn eða fleiri netþjónar okkar fara niður. Í dæminu mínu er kube-node2 núna að keyra Selenium hub pod og 1 Selenium Firefox node pod.

[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  

Við munum líkja eftir bilun á netþjóni með því að leggja niður kube-node2. Eftir nokkrar mínútur ættir þú að sjá að gámarnir sem voru í gangi á kube-node2 hafa verið færðir aftur í kube-node1, sem tryggir lágmarks röskun á þjónustu.

[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

Stækkaðu selennetið þitt

Að stækka selennetið þitt er mjög auðvelt með Kubernetes. Ímyndaðu þér að í stað 2 Firefox hnúta myndi ég vilja keyra 4. Stækkunina er hægt að gera með einni skipun:

[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

Byrjaðu með Kubernetes á CentOS 7

Skildu eftir athugasemd

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Gervigreind er ekki í framtíðinni, hún er hér í nútímanum Í þessu bloggi Lestu hvernig gervigreindarforrit hafa haft áhrif á ýmsa geira.

DDOS árásir: Stutt yfirlit

DDOS árásir: Stutt yfirlit

Ertu líka fórnarlamb DDOS árása og ruglaður með forvarnaraðferðirnar? Lestu þessa grein til að leysa spurningar þínar.

Hefur þú einhvern tíma velt því fyrir þér hvernig tölvuþrjótar græða peninga?

Hefur þú einhvern tíma velt því fyrir þér hvernig tölvuþrjótar græða peninga?

Þú gætir hafa heyrt að tölvuþrjótar græða mikið af peningum, en hefur þú einhvern tíma velt því fyrir þér hvernig þeir vinna sér inn svona peninga? við skulum ræða.

Byltingarkenndar uppfinningar frá Google sem munu auðvelda lífi þínu.

Byltingarkenndar uppfinningar frá Google sem munu auðvelda lífi þínu.

Viltu sjá byltingarkenndar uppfinningar frá Google og hvernig þessar uppfinningar breyttu lífi hvers manns í dag? Lestu síðan til að blogga til að sjá uppfinningar frá Google.

Föstudagur Nauðsynlegur: Hvað varð um gervigreindardrifna bíla?

Föstudagur Nauðsynlegur: Hvað varð um gervigreindardrifna bíla?

Hugmyndin um að sjálfkeyrandi bílar fari á göturnar með hjálp gervigreindar er draumur sem við höfum átt um tíma núna. En þrátt fyrir nokkur loforð eru þau hvergi sjáanleg. Lestu þetta blogg til að læra meira…

Tæknileg sérkenni: Fjarlæg framtíð mannlegrar siðmenningar?

Tæknileg sérkenni: Fjarlæg framtíð mannlegrar siðmenningar?

Þar sem vísindin þróast hratt og taka yfir mikið af viðleitni okkar, eykst hættan á því að verða fyrir óútskýranlegri einstæðu. Lestu, hvað sérkenni gæti þýtt fyrir okkur.

Virkni Big Data Reference Architecture Layers

Virkni Big Data Reference Architecture Layers

Lestu bloggið til að þekkja mismunandi lög í Big Data Architecture og virkni þeirra á einfaldasta hátt.

Þróun gagnageymslu – Infographic

Þróun gagnageymslu – Infographic

Geymsluaðferðir gagna hafa verið að þróast gæti verið frá fæðingu gagna. Þetta blogg fjallar um þróun gagnageymslu á grundvelli upplýsingamynda.

6 ótrúlegir kostir þess að hafa snjall heimilistæki í lífi okkar

6 ótrúlegir kostir þess að hafa snjall heimilistæki í lífi okkar

Í þessum stafræna heimi hafa snjallheimilistæki orðið afgerandi hluti af lífi. Hér eru nokkrir ótrúlegir kostir snjallheimatækja um hvernig þau gera líf okkar þess virði að lifa því og einfaldara.

macOS Catalina 10.15.4 viðbót uppfærsla veldur fleiri vandamálum en að leysa

macOS Catalina 10.15.4 viðbót uppfærsla veldur fleiri vandamálum en að leysa

Nýlega gaf Apple út macOS Catalina 10.15.4 viðbótaruppfærslu til að laga vandamál en svo virðist sem uppfærslan sé að valda fleiri vandamálum sem leiða til múrsteins á Mac vélum. Lestu þessa grein til að læra meira