OpenShift - Docker และ Kubernetes

OpenShift สร้างขึ้นบน Docker และ Kubernetes คอนเทนเนอร์ทั้งหมดสร้างขึ้นที่ด้านบนของคลัสเตอร์ Docker ซึ่งโดยทั่วไปแล้วบริการ Kubernetes ที่อยู่ด้านบนของเครื่อง Linux โดยใช้คุณสมบัติ Kubernetes orchestrations

ในกระบวนการนี้เราสร้าง Kubernetes master ซึ่งควบคุมโหนดทั้งหมดและปรับใช้คอนเทนเนอร์ไปยังโหนดทั้งหมด หน้าที่หลักของ Kubernetes คือการควบคุมคลัสเตอร์ OpenShift และขั้นตอนการปรับใช้โดยใช้ไฟล์การกำหนดค่าประเภทอื่น เช่นเดียวกับใน Kubernetes เราใช้ kubctl ในลักษณะเดียวกับที่เราใช้ยูทิลิตี้บรรทัดคำสั่ง OC เพื่อสร้างและปรับใช้คอนเทนเนอร์บนโหนดคลัสเตอร์

ต่อไปนี้เป็นไฟล์กำหนดค่าประเภทต่างๆที่ใช้ในการสร้างอ็อบเจ็กต์ประเภทต่างๆในคลัสเตอร์

  • Images
  • POD
  • Service
  • ตัวควบคุมการจำลอง
  • ชุดจำลอง
  • Deployment

รูปภาพ

อิมเมจ Kubernetes (Docker) เป็นส่วนประกอบสำคัญของ Containerized Infrastructure ณ ตอนนี้ Kubernetes รองรับเฉพาะDockerภาพ คอนเทนเนอร์แต่ละอันในพ็อดจะมีอิมเมจ Docker ทำงานอยู่ข้างใน

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

POD

พ็อดคือคอลเล็กชันของคอนเทนเนอร์และที่เก็บข้อมูลภายในโหนดของคลัสเตอร์ Kubernetes เป็นไปได้ที่จะสร้างพ็อดที่มีภาชนะหลายอันอยู่ข้างใน ต่อไปนี้เป็นตัวอย่างของการเก็บคอนเทนเนอร์ฐานข้อมูลและคอนเทนเนอร์เว็บอินเตอร์เฟสไว้ในพ็อดเดียวกัน

apiVersion: v1
kind: Pod
metadata:
   name: Tomcat
spec:
   containers:
   - name: Tomcat
      image: tomcat: 8.0
      ports:
- containerPort: 7500
imagePullPolicy: Always

บริการ

บริการสามารถกำหนดเป็นชุดของพ็อดเชิงตรรกะได้ สามารถกำหนดให้เป็นนามธรรมที่ด้านบนของพ็อดที่ระบุที่อยู่ IP เดียวและชื่อ DNS ที่สามารถเข้าถึงพ็อดได้ ด้วยบริการการจัดการการกำหนดค่าการจัดสรรภาระงานทำได้ง่ายมาก ช่วยให้ POD สามารถปรับขนาดได้ง่ายมาก

apiVersion: v1
kind: Service
metadata:
   name: Tutorial_point_service
spec:
   ports:
   - port: 8080
      targetPort: 31999

ตัวควบคุมการจำลอง

Replication Controller เป็นหนึ่งในคุณสมบัติหลักของ Kubernetes ซึ่งมีหน้าที่จัดการวงจรชีวิตของพ็อด มีหน้าที่รับผิดชอบในการตรวจสอบให้แน่ใจว่าจำนวนการจำลองพ็อดที่ระบุกำลังทำงานอยู่ ณ เวลาใดก็ได้

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

ชุดจำลอง

ชุดการจำลองช่วยให้มั่นใจได้ว่าควรจะเรียกใช้พ็อดจำลองจำนวนเท่าใด ถือได้ว่าเป็นการแทนที่ตัวควบคุมการจำลองแบบ

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

การปรับใช้

การปรับใช้จะได้รับการอัพเกรดและตัวควบคุมการจำลองรุ่นที่สูงขึ้น พวกเขาจัดการการปรับใช้ชุดข้อมูลจำลองซึ่งเป็นเวอร์ชันอัพเกรดของตัวควบคุมการจำลองด้วย พวกเขามีความสามารถในการอัปเดตชุดข้อมูลจำลองและยังสามารถย้อนกลับไปยังเวอร์ชันก่อนหน้าได้อีกด้วย

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

ไฟล์กำหนดค่าทั้งหมดสามารถใช้เพื่อสร้างออบเจ็กต์ Kubernetes ตามลำดับ

$ Kubectl create –f <file name>.yaml

คำสั่งต่อไปนี้สามารถใช้เพื่อทราบรายละเอียดและคำอธิบายของออบเจ็กต์ 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>

สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับวิธีการทำงานร่วมกับนักเทียบท่าและ Kubernetes กรุณาเยี่ยมชมกวดวิชา Kubernetes ของเราโดยใช้ลิงค์ต่อไปนี้Kubernetes