OpenShift - Docker i Kubernetes
OpenShift jest oparty na Docker i Kubernetes. Wszystkie kontenery są zbudowane na klastrze Docker, który jest w zasadzie usługą Kubernetes na komputerach z systemem Linux, przy użyciu funkcji orkiestracji Kubernetes.
W tym procesie budujemy Kubernetes master, który kontroluje wszystkie węzły i wdraża kontenery we wszystkich węzłach. Główną funkcją Kubernetes jest sterowanie klastrem OpenShift i przepływem wdrażania przy użyciu innego rodzaju pliku konfiguracyjnego. Podobnie jak w Kubernetes, używamy kubctl w taki sam sposób, w jaki używamy narzędzia wiersza poleceń OC do budowania i wdrażania kontenerów w węzłach klastra.
Poniżej przedstawiono różne rodzaje plików konfiguracyjnych używanych do tworzenia różnego rodzaju obiektów w klastrze.
- Images
- POD
- Service
- Kontroler replikacji
- Zestaw replik
- Deployment
Obrazy
Obrazy Kubernetes (Docker) są kluczowymi elementami składowymi infrastruktury kontenerowej. Obecnie Kubernetes obsługuje tylko plikiDockerobrazy. Każdy kontener w kapsule ma uruchomiony obraz Dockera.
apiVersion: v1
kind: pod
metadata:
name: Tesing_for_Image_pull -----------> 1
spec:
containers:
- name: neo4j-server ------------------------> 2
image: <Name of the Docker image>----------> 3
imagePullPolicy: Always ------------->4
command: [“echo”, “SUCCESS”] -------------------> 5
STRĄK
Pod to kolekcja kontenerów i ich miejsca przechowywania wewnątrz węzła klastra Kubernetes. Możliwe jest utworzenie kapsuły z wieloma kontenerami w środku. Poniżej znajduje się przykład utrzymywania kontenera bazy danych i kontenera interfejsu internetowego w tym samym pod.
apiVersion: v1
kind: Pod
metadata:
name: Tomcat
spec:
containers:
- name: Tomcat
image: tomcat: 8.0
ports:
- containerPort: 7500
imagePullPolicy: Always
Usługa
Usługę można zdefiniować jako logiczny zestaw zasobników. Można go zdefiniować jako abstrakcję na górze kapsuły, która zapewnia pojedynczy adres IP i nazwę DNS, za pomocą której można uzyskać dostęp do zasobników. Dzięki usłudze bardzo łatwo jest zarządzać konfiguracją równoważenia obciążenia. Ułatwia skalowanie POD-ów.
apiVersion: v1
kind: Service
metadata:
name: Tutorial_point_service
spec:
ports:
- port: 8080
targetPort: 31999
Kontroler replikacji
Kontroler replikacji to jedna z kluczowych funkcji Kubernetes, która jest odpowiedzialna za zarządzanie cyklem życia poda. Jest odpowiedzialny za upewnienie się, że określona liczba replik pod jest uruchomiona w dowolnym momencie.
apiVersion: v1
kind: ReplicationController
metadata:
name: Tomcat-ReplicationController
spec:
replicas: 3
template:
metadata:
name: Tomcat-ReplicationController
labels:
app: App
component: neo4j
spec:
containers:
- name: Tomcat
image: tomcat: 8.0
ports:
- containerPort: 7474
Zestaw replik
Zestaw replik zapewnia, ile replik ma być uruchomionych. Można to traktować jako zamiennik kontrolera replikacji.
apiVersion: extensions/v1beta1
kind: ReplicaSet
metadata:
name: Tomcat-ReplicaSet
spec:
replicas: 3
selector:
matchLables:
tier: Backend
matchExpression:
- { key: tier, operation: In, values: [Backend]}
app: App
component: neo4j
spec:
containers:
- name: Tomcat-
image: tomcat: 8.0
ports:
containerPort: 7474
Rozlokowanie
Wdrożenia to uaktualnione i wyższe wersje kontrolera replikacji. Zarządzają wdrażaniem zestawów replik, które są również ulepszoną wersją kontrolera replikacji. Mają możliwość aktualizowania zestawu replik, a także przywracania poprzedniej wersji.
apiVersion: extensions/v1beta1 --------------------->1
kind: Deployment --------------------------> 2
metadata:
name: Tomcat-ReplicaSet
spec:
replicas: 3
template:
metadata:
lables:
app: Tomcat-ReplicaSet
tier: Backend
spec:
containers:
name: Tomcat-
image: tomcat: 8.0
ports:
- containerPort: 7474
Wszystkie pliki konfiguracyjne mogą służyć do tworzenia odpowiednich obiektów Kubernetes.
$ Kubectl create –f <file name>.yaml
Poniższych poleceń można użyć, aby poznać szczegóły i opis obiektów Kubernetes.
For POD
$ Kubectl get pod <pod name>
$ kubectl delete pod <pod name>
$ kubectl describe pod <pod name>
For Replication Controller
$ Kubectl get rc <rc name>
$ kubectl delete rc <rc name>
$ kubectl describe rc <rc name>
For Service
$ Kubectl get svc <svc name>
$ kubectl delete svc <svc name>
$ kubectl describe svc <svc name>
Aby uzyskać więcej informacji na temat pracy z Dockerem i Kubernetesem, odwiedź nasz samouczek Kubernetes, korzystając z następującego linku kubernetes .