Διαμόρφωση στατικής δικτύωσης και IPv6 στο CentOS 7
Το VULTR έκανε πρόσφατα αλλαγές στο τέλος του και όλα θα πρέπει τώρα να λειτουργούν σωστά με το NetworkManager ενεργοποιημένο. Εάν θέλετε να απενεργοποιήσετε
Το Kubernetes είναι μια πλατφόρμα ανοιχτού κώδικα που αναπτύχθηκε από την Google για τη διαχείριση εφαρμογών με κοντέινερ σε ένα σύμπλεγμα διακομιστών. Βασίζεται σε μιάμιση δεκαετία εμπειρίας που έχει η Google με τη λειτουργία συμπλεγμάτων κοντέινερ σε κλίμακα , και παρέχει στους προγραμματιστές υποδομή στυλ Google, αξιοποιώντας έργα ανοιχτού κώδικα με τα καλύτερα έργα, όπως:
Το Kubernetes επιτρέπει στους προγραμματιστές να ορίζουν την υποδομή εφαρμογών τους δηλωτικά μέσω αρχείων YAML και αφαιρέσεων όπως Pods, RC και Services (περισσότερα γι' αυτό αργότερα) και διασφαλίζει ότι το υποκείμενο σύμπλεγμα ταιριάζει με την κατάσταση που ορίζεται από τον χρήστη ανά πάσα στιγμή.
Μερικά από τα χαρακτηριστικά του περιλαμβάνουν:
Μεταβείτε στην Εγκατάσταση εάν είστε ήδη εξοικειωμένοι με το Kubernetes.
Το Kubernetes προσφέρει τις ακόλουθες αφαιρέσεις (λογικές μονάδες) στους προγραμματιστές:
Είναι η βασική μονάδα φόρτου εργασίας Kubernetes. Ένα pod μοντελοποιεί έναν "λογικό κεντρικό υπολογιστή" για συγκεκριμένη εφαρμογή σε ένα κοντέινερ περιβάλλον. Με απλούς όρους, μοντελοποιεί μια ομάδα εφαρμογών ή υπηρεσιών που συνήθιζαν να λειτουργούν στον ίδιο διακομιστή στον κόσμο πριν από το κοντέινερ. Τα κοντέινερ μέσα σε ένα pod μοιράζονται τον ίδιο χώρο ονομάτων δικτύου και μπορούν επίσης να μοιράζονται όγκους δεδομένων.
Τα Pods είναι εξαιρετικά για την ομαδοποίηση πολλών κοντέινερ σε λογικές μονάδες εφαρμογής, αλλά δεν προσφέρουν αναπαραγωγή ή επαναπρογραμματισμό σε περίπτωση αποτυχίας διακομιστή.
Εδώ είναι χρήσιμος ένας ελεγκτής αναπαραγωγής ή RC. Ένα RC διασφαλίζει ότι ένας αριθμός ομάδων ομάδων μιας δεδομένης υπηρεσίας εκτελείται πάντα σε όλο το σύμπλεγμα.
Είναι μεταδεδομένα κλειδιού-τιμής που μπορούν να προσαρτηθούν σε οποιονδήποτε πόρο του Kubernetes (pods, RC, υπηρεσίες, κόμβοι, ...).
Τα pod και οι ελεγκτές αναπαραγωγής είναι ιδανικά για την ανάπτυξη και τη διανομή εφαρμογών σε ένα σύμπλεγμα, αλλά τα pods έχουν εφήμερες διευθύνσεις IP που αλλάζουν κατά τον επαναπρογραμματισμό ή την επανεκκίνηση του κοντέινερ.
Μια υπηρεσία Kubernetes παρέχει ένα σταθερό τελικό σημείο (σταθερή εικονική IP + θύρα σύνδεσης με τους κεντρικούς διακομιστές) για μια ομάδα ομάδων που διαχειρίζεται ένας ελεγκτής αναπαραγωγής.
Στην απλούστερη μορφή του, ένα σύμπλεγμα Kubernetes αποτελείται από δύο τύπους κόμβων:
Το κύριο Kubernetes είναι η μονάδα ελέγχου ολόκληρου του συμπλέγματος.
Τα κύρια συστατικά του πλοιάρχου είναι:
Ο κόμβος Kubernetes είναι διακομιστές εργασίας που είναι υπεύθυνοι για την εκτέλεση των pods.
Τα κύρια συστατικά ενός κόμβου είναι:
Σε αυτόν τον οδηγό, θα δημιουργήσουμε ένα σύμπλεγμα 3 κόμβων χρησιμοποιώντας διακομιστές CentOS 7:
Μπορείτε να προσθέσετε όσους επιπλέον κόμβους θέλετε αργότερα ακολουθώντας την ίδια διαδικασία εγκατάστασης για τους κόμβους Kubernetes.
Διαμόρφωση ονομάτων κεντρικών υπολογιστών και /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
Εγκαταστήστε τα κύρια πακέτα Kubernetes:
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
Εγκαταστήστε και διαμορφώστε το ύφασμα δικτύου επικάλυψης Flannel (αυτό είναι απαραίτητο ώστε τα κοντέινερ που εκτελούνται σε διαφορετικούς διακομιστές να μπορούν να βλέπουν το ένα το άλλο):
yum install flannel
Δημιουργήστε ένα αρχείο διαμόρφωσης Flannel ( flannel-config.json
):
{
"Network": "10.20.0.0/16",
"SubnetLen": 24,
"Backend": {
"Type": "vxlan",
"VNI": 1
}
}
Ορίστε τη διαμόρφωση Flannel στον διακομιστή Etcd:
etcdctl set coreos.com/network/config < flannel-config.json
Τοποθετήστε Flannel στον διακομιστή Etcd:
# /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
Επανεκκίνηση διακομιστή.
Εγκαταστήστε τα πακέτα κόμβων Kubernetes:
yum install docker kubernetes-node
Τα επόμενα δύο βήματα θα διαμορφώσουν το Docker ώστε να χρησιμοποιεί επικαλύψεις για καλύτερη απόδοση. Για περισσότερες πληροφορίες επισκεφθείτε αυτήν την ανάρτηση ιστολογίου :
Διαγράψτε τον τρέχοντα κατάλογο αποθήκευσης docker:
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
Ρυθμίστε το kube-node1 για να χρησιμοποιήσει τον προηγουμένως διαμορφωμένο κύριο:
# /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"
Εγκαταστήστε και διαμορφώστε το ύφασμα δικτύου επικάλυψης Flannel (και πάλι - αυτό είναι απαραίτητο ώστε τα κοντέινερ που εκτελούνται σε διαφορετικούς διακομιστές να μπορούν να βλέπουν το ένα το άλλο):
yum install flannel
Τοποθετήστε Flannel στον διακομιστή Etcd:
# /etc/sysconfig/flanneld
FLANNEL_ETCD="http://kube-master:2379"
Ενεργοποίηση υπηρεσιών:
systemctl enable docker
systemctl enable flanneld
systemctl enable kubelet
systemctl enable kube-proxy
Κάντε επανεκκίνηση του διακομιστή.
Μετά την επανεκκίνηση όλων των διακομιστών, ελέγξτε εάν το σύμπλεγμα Kubernetes είναι λειτουργικό:
[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
Το Selenium είναι ένα πλαίσιο για την αυτοματοποίηση των προγραμμάτων περιήγησης για δοκιμαστικούς σκοπούς. Είναι ένα ισχυρό εργαλείο του οπλοστασίου οποιουδήποτε προγραμματιστή ιστού.
Το πλέγμα σεληνίου επιτρέπει την κλιμακούμενη και παράλληλη εξ αποστάσεως εκτέλεση δοκιμών σε ένα σύμπλεγμα κόμβων σεληνίου που συνδέονται με έναν κεντρικό κόμβο σεληνίου.
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:
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-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
Εδώ μπορούμε να δούμε ότι η Kubernetes έχει τοποθετήσει το δοχείο μου με σελήνιο στο kube-node2.
# 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
Μετά την ανάπτυξη της υπηρεσίας, θα είναι προσβάσιμη από:
(χρησιμοποιώντας τη δημόσια IP ενός άλλου κόμβου Kubernetes)
Ελεγκτής αναπαραγωγής κόμβου 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"
Ανάπτυξη:
Αντικαταστήστε replace_with_service_ip
το selenium-node-firefox-rc.yaml
με την πραγματική IP υπηρεσίας διανομέα Selenium, σε αυτήν την περίπτωση 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
Όπως μπορούμε να δούμε, η Kubernetes έχει δημιουργήσει 2 αντίγραφα selenium-firefox-node
και τα έχει διανείμει σε όλο το σύμπλεγμα. Το Pod selenium-node-firefox-lc6qt
βρίσκεται στο kube-node2, ενώ το pod selenium-node-firefox-y9qjp
είναι στο kube-node1.
Επαναλαμβάνουμε την ίδια διαδικασία για τους κόμβους Selenium Chrome.
Ελεγκτής αναπαραγωγής κόμβου 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"
Ανάπτυξη:
[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
Σε αυτόν τον οδηγό, έχουμε δημιουργήσει ένα μικρό σύμπλεγμα Kubernetes με 3 διακομιστές (1 κύριος ελεγκτής + 2 εργαζόμενοι).
Χρησιμοποιώντας pods, RC και μια υπηρεσία, αναπτύξαμε με επιτυχία ένα Selenium Grid που αποτελείται από έναν κεντρικό διανομέα και 4 κόμβους, επιτρέποντας στους προγραμματιστές να εκτελούν 4 ταυτόχρονες δοκιμές Selenium τη φορά στο σύμπλεγμα.
Η Kubernetes προγραμμάτισε αυτόματα τα κοντέινερ σε ολόκληρο το σύμπλεγμα.
Η Kubernetes επαναπρογραμματίζει αυτόματα τα pods σε υγιείς διακομιστές, εάν ένας ή περισσότεροι από τους διακομιστές μας διακοπούν. Στο παράδειγμά μου, το kube-node2 τρέχει αυτήν τη στιγμή το Selenium hub pod και 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
Θα προσομοιώσουμε την αποτυχία διακομιστή κλείνοντας το kube-node2. Μετά από μερικά λεπτά, θα πρέπει να δείτε ότι τα κοντέινερ που λειτουργούσαν στο kube-node2 έχουν επαναπρογραμματιστεί σε kube-node1, διασφαλίζοντας ελάχιστη διακοπή της υπηρεσίας.
[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
Η κλιμάκωση του πλέγματος Selenium είναι εξαιρετικά εύκολη με το Kubernetes. Φανταστείτε ότι αντί για 2 κόμβους Firefox, θα ήθελα να εκτελέσω 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
Το VULTR έκανε πρόσφατα αλλαγές στο τέλος του και όλα θα πρέπει τώρα να λειτουργούν σωστά με το NetworkManager ενεργοποιημένο. Εάν θέλετε να απενεργοποιήσετε
Τι χρειάζεστε Ένα Vultr VPS με τουλάχιστον 1 GB μνήμης RAM. Πρόσβαση SSH (με δικαιώματα root/διαχειριστή). Βήμα 1: Εγκατάσταση του BungeeCord Πρώτα πράγματα
Εισαγωγή Η εργασία σε συστήματα Linux σημαίνει ότι κάποιος χρησιμοποιεί τη γραμμή εντολών πιο συχνά. Πρέπει επίσης να πληκτρολογήσετε μεγάλα ονόματα καταλόγου ξανά και ξανά
Εισαγωγή Το RethinkDB είναι μια βάση δεδομένων NoSQL που αποθηκεύει δεδομένα ως έγγραφα JSON. Διαθέτει μια εξαιρετικά διαισθητική γλώσσα ερωτημάτων και διαθέτει χαρακτηριστικά που είναι κοινά διαθέσιμα i
Το DirectAdmin είναι ένας ιδιόκτητος πίνακας ελέγχου που βασίζεται στο web που μπορείτε να εγκαταστήσετε στον διακομιστή σας, ο οποίος προσφέρει μια ποικιλία λειτουργιών διαχείρισης συστήματος. Σε αυτό
Αυτό το άρθρο περιγράφει τη διαδικασία εκκίνησης για συστήματα CentOS/RHEL 7.x. Αν και μπορεί να παραμείνει παρόμοιο με τις προηγούμενες εκδόσεις, με το RHEL 7, το systemd είναι
Εισαγωγή Το PostgreSQL είναι το πιο προηγμένο σύστημα διαχείρισης σχεσιακών βάσεων δεδομένων ανοιχτού κώδικα στον κόσμο (RDBMS). Είναι συμβατό με τα πρότυπα ANSI SQL:2008 και
Η διαχείριση των χρηστών μπορεί να είναι μια τρομακτική εργασία: από την καθημερινή συντήρηση, τους κινδύνους ασφαλείας και την έλλειψη ενδελεχούς ηλεκτρονικής τεκμηρίωσης. Αυτό το άρθρο θα σας βοηθήσει να ξεκινήσετε
Η τεχνολογία Docker container σάς επιτρέπει να εκτελείτε εφαρμογές σε ένα συγκεκριμένο και απομονωμένο περιβάλλον. Το Docker Community Edition (CE) είναι το νέο όνομα για το fre
Εισαγωγή Ένας πρόσφατα ενεργοποιημένος διακομιστής CentOS 7 πρέπει να προσαρμοστεί για να μπορέσει να χρησιμοποιηθεί ως σύστημα παραγωγής. Σε αυτό το άρθρο, το πιο σημαντικό
Εισαγωγή Σε αυτό το σεμινάριο, καλό είναι να εγκαταστήσετε το Speedtest-cli για να ελέγξετε την ταχύτητα δικτύου του διακομιστή σας. Το Speedtest-cli είναι μια διεπαφή γραμμής εντολών για το th
Η διαχείριση του διακομιστή σας μόνο με SSH μπορεί να είναι εκφοβιστική. Το καλό για εμάς είναι ότι το Vultr έχει μια επιλογή View Console. Για να χρησιμοποιήσετε πλήρως την κονσόλα Vultrs VNC
Εισαγωγή Για τους διαχειριστές διακομιστών, είναι σημαντικό να ρυθμίζουν και να διατηρούν σωστά την ώρα στους διακομιστές. Ο εσφαλμένα ρυθμισμένος χρόνος θα προκαλέσει χάος εντός του ου
Χρησιμοποιώντας ένα διαφορετικό σύστημα; Το Foreman είναι ένα δωρεάν και ανοιχτού κώδικα εργαλείο που σας βοηθά με τη διαμόρφωση και τη διαχείριση φυσικών και εικονικών διακομιστών. Forema
Εισαγωγή Το Sysctl επιτρέπει στο χρήστη να ρυθμίσει με ακρίβεια τον πυρήνα χωρίς να χρειάζεται να ξαναχτίσει τον πυρήνα. Θα εφαρμόσει επίσης τις αλλαγές αμέσως, έτσι ο διακομιστής κέρδισε
Σε αυτό το σεμινάριο, θα καλύψουμε τη διαδικασία εγκατάστασης και χρήσης nethogs στο CentOS 6x x64. Το nethogs είναι ένα εργαλείο παρακολούθησης δικτύου που επιτρέπει στο Networ
Το CentOS Web Panel ή CWP είναι ένας πίνακας ελέγχου φιλοξενίας ανοιχτού κώδικα που έχει σχεδιαστεί για γρήγορη και εύκολη διαχείριση ενός διακομιστή. Περιλαμβάνει όλα τα χαρακτηριστικά o
Υπάρχουν πολλές λύσεις εκεί έξω που αντικαθιστούν το Microsoft Exchange με μια λύση Linux, αλλά όλες είχαν ένα πρόβλημα που δεν μου άρεσε πολύ. Όταν λαμβάνω
Χρησιμοποιώντας ένα διαφορετικό σύστημα; Εισαγωγή Η συνεχής ενοποίηση είναι μια πρακτική ανάπτυξης λογισμικού DevOps που επιτρέπει στους προγραμματιστές να συγχωνεύουν συχνά
Το Glowing Bear είναι μια διεπαφή ιστού για τον πελάτη WeeChat IRC και προσπαθεί να είναι μια σύγχρονη διεπαφή. Με τα χαρακτηριστικά του, όπως κλικ για αναφορά, αντικατάσταση emoji
Η Τεχνητή Νοημοσύνη δεν είναι στο μέλλον, είναι εδώ ακριβώς στο παρόν Σε αυτό το blog Διαβάστε πώς οι εφαρμογές Τεχνητής Νοημοσύνης έχουν επηρεάσει διάφορους τομείς.
Είστε επίσης θύμα των επιθέσεων DDOS και έχετε μπερδευτεί σχετικά με τις μεθόδους πρόληψης; Διαβάστε αυτό το άρθρο για να λύσετε τις απορίες σας.
Μπορεί να έχετε ακούσει ότι οι χάκερ κερδίζουν πολλά χρήματα, αλλά έχετε αναρωτηθεί ποτέ πώς κερδίζουν τέτοια χρήματα; ας συζητήσουμε.
Θέλετε να δείτε επαναστατικές εφευρέσεις της Google και πώς αυτές οι εφευρέσεις άλλαξαν τη ζωή κάθε ανθρώπου σήμερα; Στη συνέχεια, διαβάστε στο blog για να δείτε τις εφευρέσεις της Google.
Η ιδέα των αυτοκινούμενων αυτοκινήτων να βγαίνουν στους δρόμους με τη βοήθεια της τεχνητής νοημοσύνης είναι ένα όνειρο που έχουμε εδώ και καιρό. Όμως, παρά τις πολλές υποσχέσεις, δεν φαίνονται πουθενά. Διαβάστε αυτό το blog για να μάθετε περισσότερα…
Καθώς η Επιστήμη εξελίσσεται με γρήγορους ρυθμούς, αναλαμβάνοντας πολλές από τις προσπάθειές μας, αυξάνονται και οι κίνδυνοι να υποβάλλουμε τον εαυτό μας σε μια ανεξήγητη Ιδιότητα. Διαβάστε τι σημαίνει η μοναδικότητα για εμάς.
Οι μέθοδοι αποθήκευσης των δεδομένων εξελίσσονται μπορεί να είναι από τη γέννηση των Δεδομένων. Αυτό το ιστολόγιο καλύπτει την εξέλιξη της αποθήκευσης δεδομένων με βάση ένα infographic.
Διαβάστε το ιστολόγιο για να μάθετε διαφορετικά επίπεδα στην Αρχιτεκτονική Μεγάλων Δεδομένων και τις λειτουργίες τους με τον απλούστερο τρόπο.
Σε αυτόν τον ψηφιακό κόσμο, οι έξυπνες οικιακές συσκευές έχουν γίνει κρίσιμο μέρος της ζωής. Ακολουθούν μερικά εκπληκτικά οφέλη των έξυπνων οικιακών συσκευών σχετικά με το πώς κάνουν τη ζωή μας να αξίζει και να απλοποιείται.
Πρόσφατα, η Apple κυκλοφόρησε το macOS Catalina 10.15.4 μια συμπληρωματική ενημέρωση για την επιδιόρθωση προβλημάτων, αλλά φαίνεται ότι η ενημέρωση προκαλεί περισσότερα προβλήματα που οδηγούν σε bricking των μηχανών mac. Διαβάστε αυτό το άρθρο για να μάθετε περισσότερα