Jika kamu mempunyai pertanyaan, periksa dokumentasi di kubespray.io dan bergabunglah dengan kami di saluran kubernetes slack #kubespray . Anda bisa mendapatkan undangan Anda di sini
Berikut adalah beberapa cara menggunakan Kubespray untuk men-deploy cluster Kubernetes.
Instal Ansible sesuai panduan instalasi Ansible lalu jalankan langkah-langkah berikut:
# 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
Catatan: Ketika Ansible sudah diinstal melalui paket sistem pada node kontrol, paket Python yang diinstal melalui sudo pip install -r requirements.txt
akan menuju ke pohon direktori yang berbeda (misalnya /usr/local/lib/python2.7/dist-packages
di Ubuntu) dari Ansible (misalnya /usr/lib/python2.7/dist-packages/ansible
masih di Ubuntu). Akibatnya, perintah ansible-playbook
akan gagal dengan:
ERROR! no action detected in task. This often indicates a misspelled module name, or incorrect module path.
Hal ini kemungkinan besar menunjukkan bahwa suatu tugas bergantung pada modul yang ada di requirements.txt
.
Salah satu cara untuk mengatasinya adalah dengan menghapus paket sistem Ansible lalu menginstal ulang Ansible melalui pip
, tetapi hal ini tidak selalu memungkinkan dan kita harus berhati-hati mengenai versi paket. Solusinya terdiri dari pengaturan variabel lingkungan ANSIBLE_LIBRARY
dan ANSIBLE_MODULE_UTILS
masing-masing ke subdirektori ansible/modules
dan ansible/module_utils
dari lokasi instalasi pip
, yang merupakan Location
yang ditunjukkan dengan menjalankan pip show [package]
sebelum mengeksekusi ansible-playbook
.
Cara sederhana untuk memastikan Anda mendapatkan semua versi Ansible yang benar adalah dengan menggunakan image buruh pelabuhan yang sudah dibuat sebelumnya dari Quay. Anda kemudian perlu menggunakan bind mount untuk mengakses inventaris dan kunci SSH di dalam container, seperti ini:
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
Lihat di sini jika Anda ingin menggunakan repositori ini sebagai koleksi yang Mungkin
Untuk Vagrant kita perlu menginstal dependensi Python untuk tugas penyediaan. Periksa apakah Python
dan pip
sudah diinstal:
python -V && pip -V
Jika ini mengembalikan versi perangkat lunak, Anda siap melakukannya. Jika belum, unduh dan instal Python dari sini https://www.python.org/downloads/source/
Instal Ansible sesuai panduan instalasi Ansible lalu jalankan langkah berikut:
vagrant up
Catatan: Jenis OS berbasis pemula/SysV init tidak didukung.
ansible_become
atau parameter perintah --become or -b
harus ditentukan.Perangkat Keras: Batasan ini dilindungi oleh Kubespray. Persyaratan sebenarnya untuk beban kerja Anda dapat berbeda. Untuk panduan ukuran, lihat panduan Membangun Cluster Besar.
Anda dapat memilih di antara sepuluh plugin jaringan. (default: calico
, kecuali Vagrant menggunakan flannel
)
kain flanel: jaringan gre/vxlan (lapisan 2).
Calico adalah penyedia jaringan dan kebijakan jaringan. Calico mendukung serangkaian opsi jaringan fleksibel yang dirancang untuk memberi Anda jaringan paling efisien dalam berbagai situasi, termasuk jaringan non-overlay dan overlay, dengan atau tanpa BGP. Calico menggunakan mesin yang sama untuk menerapkan kebijakan jaringan untuk host, pod, dan (jika menggunakan Istio dan Envoy) aplikasi pada lapisan mesh layanan.
cilium: jaringan lapisan 3/4 (serta lapisan 7 untuk melindungi dan mengamankan protokol aplikasi), mendukung penyisipan dinamis bytecode BPF ke dalam kernel Linux untuk mengimplementasikan layanan keamanan, jaringan, dan logika visibilitas.
menenun: Weave adalah jaringan overlay kontainer ringan yang tidak memerlukan cluster database K/V eksternal. (Silakan lihat dokumentasi pemecahan masalah weave
).
kube-ovn: Kube-OVN mengintegrasikan Virtualisasi Jaringan berbasis OVN dengan Kubernetes. Ia menawarkan Fabric Jaringan Kontainer yang canggih untuk Perusahaan.
kube-router: Kube-router adalah CNI L3 untuk jaringan Kubernetes yang bertujuan untuk memberikan kesederhanaan operasional dan kinerja tinggi: ia menggunakan IPVS untuk menyediakan Kube Services Proxy (jika diatur untuk menggantikan kube-proxy), iptables untuk kebijakan jaringan, dan BGP untuk ods Jaringan L3 (dengan peering BGP opsional dengan rekan BGP di luar cluster). Secara opsional, ia juga dapat mengiklankan rute ke CIDR, ClusterIP, ExternalIP, dan LoadBalancerIP pada Pod klaster Kubernetes.
macvlan: Macvlan adalah driver jaringan Linux. Pod memiliki alamat Mac dan Ip uniknya sendiri, yang terhubung langsung ke jaringan fisik (lapisan 2).
multus: Multus adalah plugin meta CNI yang menyediakan dukungan beberapa antarmuka jaringan ke pod. Untuk setiap antarmuka, Multus mendelegasikan panggilan CNI ke plugin CNI sekunder seperti Calico, macvlan, dll.
custom_cni : Anda dapat menentukan beberapa manifes yang akan diterapkan ke cluster untuk memberikan Anda CNI sendiri dan menggunakan manifes yang tidak didukung oleh Kubespray. Lihat tests/files/custom_cni/README.md
dan tests/files/custom_cni/values.yaml
untuk contoh CNI yang disediakan oleh Helm Chart.
Plugin jaringan yang akan digunakan ditentukan oleh variabel kube_network_plugin
. Ada juga opsi untuk memanfaatkan jaringan penyedia cloud bawaan. Lihat juga Pemeriksa jaringan.
nginx: Pengontrol Ingress NGINX.
metallb: penyedia LoadBalancer layanan bare-metal MetalLB.
Tes CI/end-to-end disponsori oleh: CNCF, Equinix Metal, OVHcloud, ELASTX.
Lihat matriks pengujian untuk detailnya.