Artikel ini adalah interpretasi gratis dari cluster resmi Membuat Sangat Tersedia dengan tutorial kubeadm untuk node bidang kontrol Stacked . Saya tidak suka bahasa yang rumit dan contoh yang digunakan di dalamnya, jadi saya menulis panduan saya.
Jika Anda memiliki pertanyaan atau tidak jelas, periksa dokumentasi resmi atau tanyakan ke Google . Semua tahapan dijelaskan di sini dalam bentuk yang paling sederhana dan terkendali.
Masukkan data
Kami memiliki 3 node:
- simpul1 (10.9.8.11)
- simpul2 (10.9.8.12)
- simpul3 (10.9.8.13)
Kami akan membuat satu alamat IP yang toleran terhadap kesalahan untuk mereka:
Kemudian instal etcd cluster dan Kubernetes pada mereka.
Setup Balancer
Pertama-tama, kita perlu menginstal Keepalived di ketiga node:
apt-get -y install keepalived
Sekarang kita menulis config /etc/keepalived/keepalived.conf
:
vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 1 priority 100 advert_int 1 nopreempt authentication { auth_type AH auth_pass iech6peeBu6Thoo8xaih } virtual_ipaddress { 10.9.8.10 } }
Kami mengaktifkan dan menjalankan Keepalived di ketiga node:
systemctl start keepalived systemctl enable keepalived
Sekarang kita dapat memverifikasi bahwa salah satu node menerima alamat 10.9.8.10
pada antarmuka eth0
.
Sebarkan Cluster Kubernetes
UPD: Artikel ini ditulis untuk v1.12 dan meskipun diadaptasi untuk v1.13 , sekarang prosedur untuk menyebarkan cluster terlihat jauh lebih sederhana dan lebih logis.
Lihatlah panduan sederhana ini.
saat ini semuanya bisa lebih mudah sekarang
Pastikan bahwa paket Kubernetes terbaru diinstal pada semua node:
apt-get -y install kubeadm kubelet kubectl
Juga hentikan daemon Keepalived di semua node kecuali yang terakhir .
systemctl stop keepalived
Catatan pertama
Sekarang kita akan menghasilkan konfigurasi untuk kubeadm (untuk setiap node master kita membutuhkan konfigurasi terpisah):
CLUSTER_IP=10.9.8.10 NODES=(node1 node2 node3) IPS=(10.9.8.11 10.9.8.12 10.9.8.13) POD_SUBNET="192.168.0.0/16" for i in "${!NODES[@]}"; do HOST=${IPS[$i]} NAME=${NODES[$i]} INITIAL_CLUSTER=$( for j in "${!NODES[@]}"; do echo "${NODES[$j]}=https://${IPS[$j]}:2380" done | xargs | tr ' ' , ) cat > kubeadm-config-${NODES[$i]}.yaml <<EOT apiVersion: kubeadm.k8s.io/v1beta1 kind: ClusterConfiguration kubernetesVersion: stable apiServer: certSANs: - "${CLUSTER_IP}" controlPlaneEndpoint: "${CLUSTER_IP}:6443" etcd: local: extraArgs: initial-cluster: "${INITIAL_CLUSTER}" initial-cluster-state: new name: ${NODES[$i]} listen-peer-urls: "https://${IPS[$i]}:2380" listen-client-urls: "https://127.0.0.1:2379,https://${IPS[$i]}:2379" advertise-client-urls: "https://${IPS[$i]}:2379" initial-advertise-peer-urls: "https://${IPS[$i]}:2380" serverCertSANs: - "${NODES[$i]}" - "${IPS[$i]}" peerCertSANs: - "${NODES[$i]}" - "${IPS[$i]}" networking: podSubnet: "${POD_SUBNET}" EOT done
Kami menginisiasi etcd pada node pertama, menghasilkan sertifikat dan admin-config
kubeadm="kubeadm --config=kubeadm-config-${HOSTNAME}.yaml" $kubeadm init phase preflight $kubeadm init phase certs all $kubeadm init phase kubelet-start $kubeadm init phase kubeconfig kubelet $kubeadm init phase etcd local $kubeadm init phase kubeconfig admin systemctl start kubelet
Kami menyalin sertifikat yang dihasilkan dan konfigurasi kubeadm ke node bidang kontrol yang tersisa.
NODES="node2 node3" CERTS=$(find /etc/kubernetes/pki/ -maxdepth 1 -name '*ca.*' -o -name '*sa.*') ETCD_CERTS=$(find /etc/kubernetes/pki/etcd/ -maxdepth 1 -name '*ca.*') for NODE in $NODES; do ssh $NODE mkdir -p /etc/kubernetes/pki/etcd scp $CERTS $NODE:/etc/kubernetes/pki/ scp $ETCD_CERTS $NODE:/etc/kubernetes/pki/etcd/ scp /etc/kubernetes/admin.conf $NODE:/etc/kubernetes scp kubeadm-config-$NODE.yaml $NODE: done
Node kedua
Kami menginisiasi etcd pada node kedua:
kubeadm="kubeadm --config=kubeadm-config-${HOSTNAME}.yaml" $kubeadm init phase preflight $kubeadm init phase certs all $kubeadm init phase kubelet-start $kubeadm init phase kubeconfig kubelet $kubeadm init phase etcd local systemctl start kubelet
Simpul ketiga
Kami memulai master Kubernet dengan etcd pada node terakhir.
(pastikan bahwa IP penyeimbang diatur dan menunjuk ke simpul ini)
kubeadm init --config kubeadm-config-${HOSTNAME}.yaml
Node pertama dan kedua
Sekarang kita dapat memulai master Kubernet pada dua node pertama:
kubeadm="kubeadm --config=kubeadm-config-${HOSTNAME}.yaml" $kubeadm init phase kubeconfig all $kubeadm init phase control-plane all $kubeadm init phase mark-control-plane $kubeadm init phase upload-config kubeadm
Dan juga menjalankan daemon Keepalived:
systemctl start keepalived