OpenShift - คลัสเตอร์
OpenShift ใช้วิธีการติดตั้งสองวิธีในการตั้งค่าคลัสเตอร์ OpenShift
- วิธีการติดตั้งอย่างรวดเร็ว
- วิธีการกำหนดค่าขั้นสูง
การตั้งค่าคลัสเตอร์
วิธีการติดตั้งด่วน
วิธีนี้ใช้สำหรับการรันคอนฟิกูเรชันการตั้งค่าคลัสเตอร์อย่างรวดเร็ว ในการใช้วิธีนี้เราต้องติดตั้งตัวติดตั้งก่อน สามารถทำได้โดยรันคำสั่งต่อไปนี้
Interactive method
$ atomic-openshift-installer install
สิ่งนี้มีประโยชน์เมื่อต้องการเรียกใช้การตั้งค่าแบบโต้ตอบ
Unattended installation method
วิธีนี้ใช้เมื่อต้องการตั้งค่าวิธีการติดตั้งโดยไม่ต้องใส่ข้อมูลโดยผู้ใช้สามารถกำหนดไฟล์ yaml การกำหนดค่าและวางไว้ใต้ ~/.config/openshift/ด้วยชื่อของ installer.cfg.yml จากนั้นสามารถรันคำสั่งต่อไปนี้เพื่อติดตั้งไฟล์–u tag.
$ atomic-openshift-installer –u install
โดยค่าเริ่มต้นจะใช้ไฟล์กำหนดค่าที่อยู่ภายใต้ ~/.config/openshift/. ในทางกลับกัน Ansible ใช้เป็นข้อมูลสำรองของการติดตั้ง
version: v2
variant: openshift-enterprise
variant_version: 3.1
ansible_log_path: /tmp/ansible.log
deployment:
ansible_ssh_user: root
hosts:
- ip: 172.10.10.1
hostname: vklnld908.int.example.com
public_ip: 24.222.0.1
public_hostname: master.example.com
roles:
- master
- node
containerized: true
connect_to: 24.222.0.1
- ip: 172.10.10.2
hostname: vklnld1446.int.example.com
public_ip: 24.222.0.2
public_hostname: node1.example.com
roles:
- node
connect_to: 10.0.0.2
- ip: 172.10.10.3
hostname: vklnld1447.int.example.com
public_ip: 10..22.2.3
public_hostname: node2.example.com
roles:
- node
connect_to: 10.0.0.3
roles:
master:
<variable_name1>: "<value1>"
<variable_name2>: "<value2>"
node:
<variable_name1>: "<value1>"
ที่นี่เรามีตัวแปรเฉพาะบทบาทซึ่งสามารถกำหนดได้หากต้องการตั้งค่าตัวแปรเฉพาะบางตัว
เมื่อเสร็จแล้วเราสามารถตรวจสอบการติดตั้งโดยใช้คำสั่งต่อไปนี้
$ oc get nodes
NAME STATUS AGE
master.example.com Ready 10d
node1.example.com Ready 10d
node2.example.com Ready 10d
การติดตั้งขั้นสูง
การติดตั้งขั้นสูงขึ้นอยู่กับการกำหนดค่า Ansible โดยสมบูรณ์ซึ่งมีการกำหนดค่าโฮสต์และนิยามตัวแปรที่เกี่ยวข้องกับการกำหนดค่าหลักและโหนด ซึ่งประกอบด้วยรายละเอียดทั้งหมดเกี่ยวกับการกำหนดค่า
เมื่อเรามีการตั้งค่าและ playbook พร้อมแล้วเราสามารถเรียกใช้คำสั่งต่อไปนี้เพื่อตั้งค่าคลัสเตอร์
$ ansible-playbook -i inventry/hosts ~/openshift-ansible/playbooks/byo/config.yml
การเพิ่มโฮสต์ในคลัสเตอร์
เราสามารถเพิ่มโฮสต์ในคลัสเตอร์โดยใช้ -
- เครื่องมือติดตั้งด่วน
- วิธีการกำหนดค่าขั้นสูง
Quick installation toolทำงานได้ทั้งในโหมดโต้ตอบและไม่โต้ตอบ ใช้คำสั่งต่อไปนี้
$ atomic-openshift-installer -u -c </path/to/file> scaleup
รูปแบบของการปรับขนาดรูปลักษณ์ของไฟล์คอนฟิกูเรชันแอ็พพลิเคชันสามารถใช้สำหรับการเพิ่มทั้งต้นแบบและโหนด
วิธีการกำหนดค่าขั้นสูง
ด้วยวิธีนี้เราอัปเดตไฟล์โฮสต์ของ Ansible จากนั้นเพิ่มโหนดหรือรายละเอียดเซิร์ฟเวอร์ใหม่ในไฟล์นี้ ไฟล์คอนฟิกูเรชันมีลักษณะดังต่อไปนี้
[OSEv3:children]
masters
nodes
new_nodes
new_master
ในไฟล์โฮสต์ Ansible เดียวกันให้เพิ่มรายละเอียดตัวแปรเกี่ยวกับโหนดใหม่ดังที่แสดงด้านล่าง
[new_nodes]
vklnld1448.int.example.com openshift_node_labels = "{'region': 'primary', 'zone': 'east'}"
สุดท้ายใช้ไฟล์โฮสต์ที่อัปเดตรันการกำหนดค่าใหม่และเรียกใช้ไฟล์คอนฟิกูเรชันเพื่อให้การตั้งค่าเสร็จสิ้นโดยใช้คำสั่งต่อไปนี้
$ ansible-playbook -i /inventory/hosts /usr/share/ansible/openshift-ansible/playbooks/test/openshift-node/scaleup.yml
การจัดการบันทึกคลัสเตอร์
บันทึกคลัสเตอร์ OpenShift ไม่ใช่อะไรนอกจากบันทึกที่สร้างขึ้นจากเครื่องต้นแบบและเครื่องโหนดของคลัสเตอร์ สิ่งเหล่านี้สามารถจัดการบันทึกประเภทใดก็ได้เริ่มตั้งแต่บันทึกเซิร์ฟเวอร์บันทึกหลักล็อกคอนเทนเนอร์ล็อกพ็อด ฯลฯ มีเทคโนโลยีและแอปพลิเคชันมากมายสำหรับการจัดการบันทึกคอนเทนเนอร์
มีเครื่องมือเพียงไม่กี่รายการตามที่ระบุไว้ซึ่งสามารถนำไปใช้ในการจัดการบันทึกได้
- Fluentd
- ELK
- Kabna
- Nagios
- Splunk
ELK stack- สแต็กนี้มีประโยชน์ในขณะที่พยายามรวบรวมบันทึกจากโหนดทั้งหมดและนำเสนอในรูปแบบที่เป็นระบบ ELK stack แบ่งออกเป็นสามประเภทหลัก ๆ
ElasticSearch - ส่วนใหญ่ตอบสนองได้สำหรับการรวบรวมข้อมูลจากคอนเทนเนอร์ทั้งหมดและวางไว้ในตำแหน่งส่วนกลาง
Fluentd - ใช้สำหรับป้อนบันทึกที่รวบรวมไปยังเครื่องยนต์คอนเทนเนอร์ที่ยืดหยุ่น
Kibana - อินเทอร์เฟซแบบกราฟิกที่ใช้สำหรับการนำเสนอข้อมูลที่รวบรวมเป็นข้อมูลที่มีประโยชน์ในอินเทอร์เฟซแบบกราฟิก
ประเด็นสำคัญประการหนึ่งที่ควรทราบคือเมื่อระบบนี้ถูกปรับใช้บนคลัสเตอร์ระบบจะเริ่มรวบรวมบันทึกจากโหนดทั้งหมด
การวินิจฉัยบันทึก
OpenShift มี inbuilt oc adm dignosticsคำสั่งกับ OC ที่สามารถใช้ในการวิเคราะห์สถานการณ์ผิดพลาดหลาย ๆ เครื่องมือนี้สามารถใช้ได้จากต้นแบบในฐานะผู้ดูแลคลัสเตอร์ ยูทิลิตี้นี้มีประโยชน์มากคือการแก้ไขปัญหาและการให้เกียรติแก่ปัญหา สิ่งนี้ทำงานบนไคลเอนต์หลักและโหนด
หากรันโดยไม่มีเอเจนต์หรือแฟล็กใด ๆ จะมองหาไฟล์คอนฟิกูเรชันของไคลเอ็นต์เซิร์ฟเวอร์และแมชชีนโหนดและใช้สำหรับการวินิจฉัย เราสามารถรันการวินิจฉัยแยกกันได้โดยส่งผ่านอาร์กิวเมนต์ต่อไปนี้ -
- AggregatedLogging
- AnalyzeLogs
- ClusterRegistry
- ClusterRoleBindings
- ClusterRoles
- ClusterRouter
- ConfigContexts
- DiagnosticPod
- MasterConfigCheck
- MasterNode
- MetricsApiProxy
- NetworkCheck
- NodeConfigCheck
- NodeDefinitions
- ServiceExternalIPs
- UnitStatus
เราสามารถเรียกใช้ด้วยคำสั่งต่อไปนี้
$ oc adm diagnostics <DiagnosticName>
การอัพเกรดคลัสเตอร์
การอัปเกรดคลัสเตอร์เกี่ยวข้องกับการอัปเกรดหลายสิ่งภายในคลัสเตอร์และการอัปเดตคลัสเตอร์ด้วยคอมโพเนนต์และอัปเกรดใหม่ สิ่งนี้เกี่ยวข้องกับ -
- การอัพเกรดส่วนประกอบหลัก
- การอัพเกรดส่วนประกอบโหนด
- การอัปเกรดนโยบาย
- การอัพเกรดเส้นทาง
- การอัปเกรดสตรีมรูปภาพ
ในการดำเนินการอัปเกรดทั้งหมดนี้เราจำเป็นต้องจัดเตรียมตัวติดตั้งหรือเครื่องมืออย่างรวดเร็วก่อน สำหรับสิ่งนั้นเราจำเป็นต้องอัปเดตยูทิลิตี้ต่อไปนี้ -
- atomic-openshift-utils
- atomic-openshift-excluder
- atomic-openshift-docker-excluder
- แพ็คเกจ etcd
ก่อนที่จะเริ่มการอัพเกรดเราจำเป็นต้องสำรองข้อมูล etcd บนเครื่องหลักซึ่งสามารถทำได้โดยใช้คำสั่งต่อไปนี้
$ ETCD_DATA_DIR = /var/lib/origin/openshift.local.etcd
$ etcdctl backup \
--data-dir $ETCD_DATA_DIR \
--backup-dir $ETCD_DATA_DIR.bak.<date>
การอัพเกรดส่วนประกอบหลัก
ใน OpenShift master เราเริ่มการอัปเกรดโดยอัปเดตไฟล์ etcd จากนั้นย้ายไปที่ Docker สุดท้ายเราเรียกใช้ผู้บริหารอัตโนมัติเพื่อให้คลัสเตอร์อยู่ในตำแหน่งที่ต้องการ อย่างไรก็ตามก่อนที่จะเริ่มการอัปเกรดเราจำเป็นต้องเปิดใช้งานแพ็กเกจ atomic openshift บนมาสเตอร์แต่ละตัวก่อน ซึ่งสามารถทำได้โดยใช้คำสั่งต่อไปนี้
Step 1 - ลบแพ็คเกจ atomic-openshift
$ atomic-openshift-excluder unexclude
Step 2 - อัพเกรด ฯลฯ กับปรมาจารย์ทั้งหมด
$ yum update etcd
Step 3 - เริ่มบริการของ etcd ใหม่และตรวจสอบว่าเริ่มต้นสำเร็จหรือไม่
$ systemctl restart etcd
$ journalctl -r -u etcd
Step 4 - อัปเกรดแพ็คเกจ Docker
$ yum update docker
Step 5 - เริ่มบริการ Docker ใหม่และตรวจสอบว่าขึ้นถูกต้องหรือไม่
$ systemctl restart docker
$ journalctl -r -u docker
Step 6 - เมื่อเสร็จแล้วให้รีบูตระบบด้วยคำสั่งต่อไปนี้
$ systemctl reboot
$ journalctl -r -u docker
Step 7 - สุดท้ายเรียกใช้ atomic-executer เพื่อรับแพ็คเกจกลับไปที่รายการยำที่ไม่รวม
$ atomic-openshift-excluder exclude
ไม่มีการบังคับในการอัปเกรดนโยบายดังกล่าวจำเป็นต้องอัปเกรดหากแนะนำเท่านั้นซึ่งสามารถตรวจสอบได้ด้วยคำสั่งต่อไปนี้
$ oadm policy reconcile-cluster-roles
ในกรณีส่วนใหญ่เราไม่จำเป็นต้องอัปเดตข้อกำหนดของนโยบาย
การอัพเกรดส่วนประกอบโหนด
เมื่อการอัปเดตหลักเสร็จสมบูรณ์เราสามารถเริ่มอัปเกรดโหนดได้ สิ่งหนึ่งที่ควรทราบคือระยะเวลาในการอัปเกรดควรสั้นเพื่อหลีกเลี่ยงปัญหาใด ๆ ในคลัสเตอร์
Step 1 - ลบแพ็คเกจ OpenShift atomic ทั้งหมดออกจากโหนดทั้งหมดที่คุณต้องการทำการอัพเกรด
$ atomic-openshift-excluder unexclude
Step 2 - ถัดไปปิดการใช้งานการตั้งเวลาโหนดก่อนอัปเกรด
$ oadm manage-node <node name> --schedulable = false
Step 3 - จำลองโหนดทั้งหมดจากโฮสต์ปัจจุบันไปยังโฮสต์อื่น
$ oadm drain <node name> --force --delete-local-data --ignore-daemonsets
Step 4 - อัปเกรดการตั้งค่า Docker บนโฮสต์
$ yum update docker
Step 5 - เริ่มบริการ Docker ใหม่จากนั้นเริ่มโหนดบริการ Docker
$systemctl restart docker
$ systemctl restart atomic-openshift-node
Step 6 - ตรวจสอบว่าทั้งคู่เริ่มต้นอย่างถูกต้องหรือไม่
$ journalctl -r -u atomic-openshift-node
Step 7 - หลังจากอัปเกรดเสร็จสิ้นให้รีบูตเครื่องโหนด
$ systemctl reboot
$ journalctl -r -u docker
Step 8 - เปิดใช้งานการตั้งเวลาบนโหนดอีกครั้ง
$ oadm manage-node <node> --schedulable.
Step 9 - เรียกใช้ atomic-openshift executer เพื่อรับแพ็คเกจ OpenShift กลับมาที่โหนด
$ atomic-openshift-excluder exclude
Step 10 - สุดท้ายตรวจสอบว่ามีโหนดทั้งหมดหรือไม่
$ oc get nodes
NAME STATUS AGE
master.example.com Ready 12d
node1.example.com Ready 12d
node2.example.com Ready 12d