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