หากคุณมีคำถาม โปรดตรวจสอบเอกสารประกอบที่ kubespray.io และเข้าร่วมกับเราใน kubernetes slack ช่อง #kubespray คุณสามารถรับคำเชิญของคุณได้ที่นี่
ด้านล่างนี้คือหลายวิธีในการใช้ Kubespray เพื่อปรับใช้คลัสเตอร์ Kubernetes
ติดตั้ง Ansible ตามคู่มือการติดตั้ง Ansible จากนั้นรันขั้นตอนต่อไปนี้:
# Copy ` ` inventory/sample ` ` as ` ` inventory/mycluster ` `
cp -rfp inventory/sample inventory/mycluster
# Update Ansible inventory file with inventory builder
declare -a IPS=(10.10.1.3 10.10.1.4 10.10.1.5)
CONFIG_FILE=inventory/mycluster/hosts.yaml python3 contrib/inventory_builder/inventory.py ${IPS[@]}
# Review and change parameters under ` ` inventory/mycluster/group_vars ` `
cat inventory/mycluster/group_vars/all/all.yml
cat inventory/mycluster/group_vars/k8s_cluster/k8s-cluster.yml
# Clean up old Kubernetes cluster with Ansible Playbook - run the playbook as root
# The option ` --become ` is required, as for example cleaning up SSL keys in /etc/,
# uninstalling old packages and interacting with various systemd daemons.
# Without --become the playbook will fail to run !
# And be mind it will remove the current kubernetes cluster (if it ' s running)!
ansible-playbook -i inventory/mycluster/hosts.yaml --become --become-user=root reset.yml
# Deploy Kubespray with Ansible Playbook - run the playbook as root
# The option ` --become ` is required, as for example writing SSL keys in /etc/,
# installing packages and interacting with various systemd daemons.
# Without --become the playbook will fail to run !
ansible-playbook -i inventory/mycluster/hosts.yaml --become --become-user=root cluster.yml
หมายเหตุ: เมื่อติดตั้ง Ansible ผ่านแพ็คเกจระบบบนโหนดควบคุมแล้ว แพ็คเกจ Python ที่ติดตั้งผ่าน sudo pip install -r requirements.txt
จะไปที่แผนผังไดเร็กทอรีอื่น (เช่น /usr/local/lib/python2.7/dist-packages
บน Ubuntu) จาก Ansible's (เช่น /usr/lib/python2.7/dist-packages/ansible
ยังอยู่บน Ubuntu) ด้วยเหตุนี้ คำสั่ง ansible-playbook
จะล้มเหลวด้วย:
ERROR! no action detected in task. This often indicates a misspelled module name, or incorrect module path.
นี่น่าจะบ่งชี้ว่างานขึ้นอยู่กับโมดูลที่มีอยู่ใน requirements.txt
วิธีหนึ่งในการแก้ไขปัญหานี้คือการถอนการติดตั้งแพ็คเกจ Ansible ของระบบ จากนั้นติดตั้ง Ansible ใหม่ผ่าน pip
แต่ไม่สามารถทำได้เสมอไปและเราต้องดูแลเวอร์ชันของแพ็คเกจด้วย วิธีแก้ปัญหาประกอบด้วยการตั้งค่าตัวแปรสภาพแวดล้อม ANSIBLE_LIBRARY
และ ANSIBLE_MODULE_UTILS
ตามลำดับให้กับไดเรกทอรีย่อย ansible/modules
และ ansible/module_utils
ของตำแหน่งการติดตั้ง pip
ซึ่งเป็น Location
ที่แสดงโดยการรัน pip show [package]
ก่อนที่จะดำเนินการ ansible-playbook
วิธีง่ายๆ ในการตรวจสอบให้แน่ใจว่าคุณได้รับ Ansible เวอร์ชันที่ถูกต้องทั้งหมดคือการใช้อิมเมจนักเทียบท่าที่สร้างไว้ล่วงหน้าจาก Quay จากนั้นคุณจะต้องใช้การผูกเมาต์เพื่อเข้าถึงสินค้าคงคลังและคีย์ SSH ในคอนเทนเนอร์ เช่นนี้
git checkout v2.26.0
docker pull quay.io/kubespray/kubespray:v2.26.0
docker run --rm -it --mount type=bind,source="$(pwd)"/inventory/sample,dst=/inventory
--mount type=bind,source="${HOME}"/.ssh/id_rsa,dst=/root/.ssh/id_rsa
quay.io/kubespray/kubespray:v2.26.0 bash
# Inside the container you may now run the kubespray playbooks:
ansible-playbook -i /inventory/inventory.ini --private-key /root/.ssh/id_rsa cluster.yml
ดูที่นี่หากคุณต้องการใช้พื้นที่เก็บข้อมูลนี้เป็นคอลเลกชัน Ansible
สำหรับ Vagrant เราจำเป็นต้องติดตั้งการพึ่งพา Python สำหรับการจัดเตรียมงาน ตรวจสอบว่าติดตั้ง Python
และ pip
แล้ว:
python -V && pip -V
หากสิ่งนี้ส่งคืนเวอร์ชันของซอฟต์แวร์ คุณก็พร้อมแล้ว ถ้าไม่เช่นนั้น ให้ดาวน์โหลดและติดตั้ง Python จากที่นี่ https://www.python.org/downloads/source/
ติดตั้ง Ansible ตามคู่มือการติดตั้ง Ansible จากนั้นรันขั้นตอนต่อไปนี้:
vagrant up
หมายเหตุ: ไม่รองรับระบบปฏิบัติการประเภท Upstart/SysV init
ansible_become
หรือพารามิเตอร์คำสั่ง --become or -b
ฮาร์ดแวร์: ขีดจำกัดเหล่านี้ได้รับการคุ้มครองโดย Kubespray ข้อกำหนดที่แท้จริงสำหรับปริมาณงานของคุณอาจแตกต่างกัน สำหรับคำแนะนำในการกำหนดขนาด ให้ไปที่คู่มือการสร้างคลัสเตอร์ขนาดใหญ่
คุณสามารถเลือกปลั๊กอินเครือข่ายได้สิบแบบ (ค่าเริ่มต้น: calico
ยกเว้น Vagrant ใช้ flannel
)
ผ้าสักหลาด: เครือข่าย gre/vxlan (เลเยอร์ 2)
Calico เป็นผู้ให้บริการนโยบายเครือข่ายและเครือข่าย Calico รองรับชุดตัวเลือกเครือข่ายที่ยืดหยุ่น ซึ่งออกแบบมาเพื่อมอบเครือข่ายที่มีประสิทธิภาพสูงสุดให้กับคุณในสถานการณ์ต่างๆ รวมถึงเครือข่ายที่ไม่ซ้อนทับและเครือข่ายซ้อนทับ โดยมีหรือไม่มี BGP Calico ใช้เครื่องมือเดียวกันในการบังคับใช้นโยบายเครือข่ายสำหรับโฮสต์ พ็อด และแอปพลิเคชัน (หากใช้ Istio และ Envoy) ที่เลเยอร์บริการแบบตาข่าย
ซีลีเนียม: เครือข่ายเลเยอร์ 3/4 (เช่นเดียวกับเลเยอร์ 7 เพื่อปกป้องและรักษาความปลอดภัยโปรโตคอลแอปพลิเคชัน) รองรับการแทรกโค้ดไบต์ BPF แบบไดนามิกลงในเคอร์เนล Linux เพื่อใช้บริการรักษาความปลอดภัย เครือข่าย และตรรกะการมองเห็น
weave: Weave เป็นเครือข่ายซ้อนทับคอนเทนเนอร์น้ำหนักเบาที่ไม่ต้องใช้คลัสเตอร์ฐานข้อมูล K/V ภายนอก (โปรดดูเอกสารการแก้ไขปัญหา weave
)
kube-ovn: Kube-OVN ผสานรวม Network Virtualization ที่ใช้ OVN เข้ากับ Kubernetes นำเสนอ Container Network Fabric ขั้นสูงสำหรับองค์กร
kube-router: Kube-router เป็น L3 CNI สำหรับเครือข่าย Kubernetes ที่มุ่งหวังที่จะมอบความเรียบง่ายในการปฏิบัติงานและประสิทธิภาพสูง โดยจะใช้ IPVS เพื่อมอบ Kube Services Proxy (หากตั้งค่าเพื่อแทนที่ kube-proxy), iptables สำหรับนโยบายเครือข่าย และ BGP สำหรับ ods เครือข่าย L3 (พร้อมตัวเลือกการเพียร์ BGP กับเพียร์ BGP นอกคลัสเตอร์) นอกจากนี้ยังสามารถเลือกโฆษณาเส้นทางไปยังพ็อดคลัสเตอร์ Kubernetes CIDR, ClusterIP, ExternalIP และ LoadBalancerIP ได้อีกด้วย
macvlan: Macvlan เป็นไดรเวอร์เครือข่าย Linux พ็อดมีที่อยู่ Mac และ Ip ที่เป็นเอกลักษณ์ของตัวเอง ซึ่งเชื่อมต่อโดยตรงกับเครือข่ายทางกายภาพ (เลเยอร์ 2)
multus: Multus เป็นปลั๊กอิน meta CNI ที่ให้การสนับสนุนอินเทอร์เฟซเครือข่ายหลายรายการแก่พ็อด สำหรับแต่ละอินเทอร์เฟซ Multus มอบหมายการเรียก CNI ไปยังปลั๊กอิน CNI รอง เช่น Calico, macvlan เป็นต้น
custom_cni : คุณสามารถระบุรายการบางส่วนที่จะใช้กับคลัสเตอร์เพื่อนำ CNI มาเป็นของคุณเอง และใช้รายการที่ไม่รองรับโดย Kubespray ดู tests/files/custom_cni/README.md
และ tests/files/custom_cni/values.yaml
สำหรับตัวอย่างที่มี CNI จัดทำโดย Helm Chart
ปลั๊กอินเครือข่ายที่จะใช้ถูกกำหนดโดยตัวแปร kube_network_plugin
นอกจากนี้ยังมีตัวเลือกในการใช้ประโยชน์จากเครือข่ายผู้ให้บริการคลาวด์ในตัวแทน ดูเพิ่มเติมที่ ตัวตรวจสอบเครือข่าย
nginx: ตัวควบคุมทางเข้า NGINX
metallb: ผู้ให้บริการ LoadBalancer บริการโลหะเปลือยของ MetalLB
การทดสอบ CI/แบบ end-to-end สนับสนุนโดย: CNCF, Equinix Metal, OVHcloud, ELASTX
ดูเมทริกซ์การทดสอบสำหรับรายละเอียด