Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Cara Menginstal Kubernetes Menggunakan Kubeadm

Kubernetes diperkenalkan di artikel sebelumnya, “Memulai Kubernetes di Amazon Web Services (AWS).” Kubernetes juga dibahas dalam artikel lain, “Menggunakan Kubernetes (K8s) di IBM Bluemix.” Kubernetes dapat diinstal pada bare metal di hampir semua OS termasuk Fedora, CentOS, Ubuntu, dan CoreOS untuk tujuan pengembangan.

Masalahnya

Instalasi Kubernetes pada bare metal melibatkan menjalankan beberapa perintah untuk menyiapkan node master, node pekerja, jaringan pod, dan lain-lain.

Solusinya

Kubernetes 1.4 memperkenalkan alat baru bernama kubeadm untuk bootstrap cluster Kubernetes. kubeadm bootstrap cluster Kubernetes dengan dua perintah. Setelah menginstal Docker, kubectl, dan kubelet, node master dapat dimulai dengan kubeadm init dan node pekerja ditambahkan dengan kubeadm join .

Pada artikel ini, kita akan menggunakan prosedur berikut untuk menginstal dan mem-bootstrap cluster Kubernetes dan selanjutnya menguji cluster:

  1. Mulai tiga instans Ubuntu baru di Amazon EC2.
  2. Di semua instance Ubuntu, instal Docker, kubeadm, kubectl, dan kubelet.
  3. Dari salah satu instance Ubuntu, inisialisasi Master cluster Kubernetes dengan perintah berikut:
    kubeadm init
  4. Terapkan kebijakan jaringan Calico Pod kubeadm/calico.yaml .
  5. Gabung dengan dua instance (node) Ubuntu lainnya dengan master dengan kubeadm join --token= .
  6. Pada master, tiga node terdaftar dengan 'kubectl get node.'
  7. Jalankan aplikasi di master:
    kubectl -s http://localhost:8080 run nginx
       --image=nginx
       --replicas=3 --port=80
    
  8. Mencantumkan pod:
    kubectl get pods -o wide
  9. Copot pemasangan cluster Kubernetes.
    kubeadm reset

Artikel ini memiliki bagian berikut:

  • Mengatur Lingkungan
  • Menginstal Docker, kubeadm, kubectl, dan kubelet di Setiap Host
  • Menginisialisasi Master
  • Memasang Jaringan Calico Pod
  • Menggabungkan Node ke Cluster
  • Memasang Contoh Aplikasi
  • Mencopot pemasangan Cluster
  • Batasan
  • Perkembangan Lebih Lanjut di kubeadm
  • Kesimpulan

Mengatur Lingkungan

kubeadm alat ini memerlukan mesin berikut yang menjalankan salah satu Ubuntu 16.04+, HypriotOS v1.0.1+, atau CentOS 7 yang menjalankannya.

  • Satu mesin untuk node master
  • Satu atau lebih mesin untuk node pekerja

Setidaknya 1GB RAM diperlukan pada setiap mesin. Kami telah menggunakan tiga mesin Ubuntu yang berjalan di Amazon EC2 untuk mem-bootstrap kluster dengan satu node master dan dua node pekerja. Ketiga mesin Ubuntu ditunjukkan pada Gambar 1.


Gambar 1: Mesin Ubuntu

Menginstal Docker, kubeadm, kubectl, dan kubelet di Setiap Host

Di bagian ini kita akan menginstal Docker, kubelet, kubectl, dan kubeadm pada masing-masing dari ketiga mesin tersebut. Komponen yang diinstal dibahas pada Tabel 1.

Komponen Deskripsi
Docker Waktu proses kontainer. Versi 1.11.2 direkomendasikan dan v1.10.3 dan v1.12.1 juga baik-baik saja. Wajib di semua mesin di cluster.
kubelet Komponen inti Kubernetes yang berjalan di semua mesin di cluster. Memulai container dan Pod. Wajib di semua mesin di cluster.
kubectl Alat baris perintah untuk mengelola cluster. Diperlukan hanya pada node master, tetapi berguna jika diinstal pada semua node.
kubeadm Alat untuk mem-bootstrap sebuah cluster. Wajib di semua mesin di cluster.

Tabel 1: Komponen untuk Dipasang

Dapatkan Alamat IP Publik masing-masing dari tiga mesin dan login SSH ke masing-masing mesin:

ssh -i "docker.pem" [email protected]
ssh -i "docker.pem" [email protected]
ssh -i "docker.pem" [email protected]

Perintah untuk menginstal binari harus dijalankan sebagai root; oleh karena itu, setel pengguna ke root.

sudo su -

Jalankan perintah berikut di setiap mesin:

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg
   | apt-key add -
cat <<EOF > /etc/apt/sources.list.d/kubernetes.list
deb http://apt.kubernetes.io/ kubernetes-xenial main
EOF

Perintah pertama mendownload paket yang diperlukan untuk Kubernetes, seperti yang ditunjukkan pada output pada Gambar 2.


Gambar 2: Mengunduh paket untuk Kubernetes

Perintah 2 mengunduh daftar paket dari repositori dan memperbaruinya dengan versi terbaru dari paket.

apt-get update

Outputnya ditunjukkan pada Gambar 3.


Gambar 3: Memperbarui paket repositori

Selanjutnya, instal Docker:

# Install docker if you don't have it already.
apt-get install -y docker.io

Docker terinstal, seperti yang ditunjukkan pada output perintah pada Gambar 4.


Gambar 4: Memasang Docker

Dan, selanjutnya instal kubelet (komponen inti Kubernetes), kubeadm (alat bootstrap), kubectl (alat manajemen cluster), dan kubernetes-cni (plugin jaringan):

apt-get install -y kubelet kubeadm kubectl kubernetes-cni

Output dari perintah sebelumnya ditunjukkan pada Gambar 5.


Gambar 5: Menginstal kubelet, kubeadm, kubectln, dan kubernetes-cni

Menginisialisasi Master

Selanjutnya, inisialisasi master tempat database etcd dan server API dijalankan. Kubelet memulai Pod untuk menjalankan komponen-komponen ini. Jalankan perintah berikut yang otomatis mendeteksi Alamat IP:

kubeadm init

Seperti yang ditunjukkan pada output perintah, pertama, beberapa pemeriksaan pra-penerbangan dijalankan untuk memvalidasi status sistem. Selanjutnya, token master/token dihasilkan yang akan digunakan sebagai kunci otentikasi bersama untuk node pekerja yang ingin bergabung dengan cluster. Selanjutnya, kunci dan sertifikat Otoritas Sertifikat yang ditandatangani sendiri dibuat untuk memberikan identitas ke setiap node dalam cluster untuk komunikasi dengan klien. Kunci dan sertifikat server API dibuat untuk server API untuk komunikasi dengan klien. Sebuah util/kubeconfig file dibuat agar kubelet dapat terhubung ke server API dan util/kubeconfig lainnya file dibuat untuk administrasi. Selanjutnya, konfigurasi klien API dibuat. Keluaran dari kubeadm init perintah ditunjukkan pada Gambar 6.


Gambar 6: Menjalankan kubeadm init

Semua komponen control plane menjadi siap. Node pertama menjadi siap dan penerapan pengujian dibuat. Komponen add-on penting kube-discovery, kube-proxy, dan kube-dns juga dibuat, seperti yang ditunjukkan pada output perintah pada Gambar 7. Master Kubernetes berhasil diinisialisasi. Perintah dengan sintaks berikut dibuat; itu harus dijalankan pada mesin (node) yang akan bergabung dengan cluster.

kubeadm join -token=<token> <IP Address of the master node>

Perintah sebelumnya harus disalin dan disimpan untuk penggunaan selanjutnya pada node pekerja.


Gambar 7: Master Kubernetes diinisialisasi

Secara default, node master tidak dapat dijadwalkan dan dibuat dengan menggunakan taint “dedicated”. Node master dapat dibuat dapat dijadwalkan dengan perintah berikut:

kubectl taint nodes --all dedicated-

kubeadm perintah mendukung beberapa opsi lain (lihat Tabel 2) yang tidak harus kita gunakan tetapi dapat digunakan untuk menimpa perintah default.

Parameter Perintah Deskripsi Default
--skip-preflight-checks Lewati pemeriksaan sebelum penerbangan Pemeriksaan sebelum penerbangan dilakukan
--use-kubernetes-version Menyetel versi Kubernetes yang akan digunakan v1.5.1
--api-advertise-addresses Perintah kubeadm init secara otomatis mendeteksi dan menggunakan Alamat IP dari antarmuka jaringan default dan menggunakannya untuk menghasilkan sertifikat untuk server API. Parameter konfigurasi ini dapat digunakan untuk mengganti default dengan satu atau beberapa Alamat IP di mana server API akan divalidasi. Deteksi otomatis
--api-external-dns-names Parameter konfigurasi ini dapat digunakan untuk mengganti antarmuka jaringan default dengan satu atau beberapa nama host tempat server API akan divalidasi. Hanya satu dari Alamat IP atau nama DNS Eksternal yang harus digunakan.
--cloud-provider Menentukan penyedia Cloud.

Cloud-manager mendukung "aws", "azure", "cloudstack", "gce", "mesos", "openstack", "ovirt", "rackspace", dan "vsphere". Konfigurasi penyedia cloud dapat disediakan di file /etc/kubernetes/cloud-config. Menggunakan penyedia Cloud juga memiliki keuntungan menggunakan volume persisten dan penyeimbangan beban.

Tidak ada deteksi otomatis penyedia Cloud
--pod-network-cidr Mengalokasikan rentang jaringan (CIDR) ke setiap node dan berguna untuk solusi jaringan tertentu, termasuk penyedia Flannel dan Cloud.
--service-cidr Mengganti subnet yang digunakan Kubernetes untuk menetapkan Alamat IP ke Pod. /etc/systemd/system/kubelet.service.d/10-kubeadm.conf juga harus diubah. 10.96.0.0/12
--service-dns-domain Mengganti akhiran nama DNS untuk menetapkan layanan dengan nama DNS; memiliki format ..svc.cluster.local . /etc/systemd/system/kubelet.service.d/10-kubeadm.conf juga harus diubah. cluster.local
--token Menentukan token yang akan digunakan untuk otentikasi timbal balik antara master dan node yang bergabung dengan cluster. Dibuat secara otomatis

Tabel 2: Opsi perintah Kubeadm

Memasang Jaringan Calico Pod

Agar Pod dapat berkomunikasi satu sama lain, add-on jaringan Pod harus diinstal. Calico menyediakan konfigurasi instalasi yang dihosting kubeadm dalam bentuk ConfigMap di http://docs.projectcalico.org/master/getting-started/kubernetes/installation/hosted/kubeadm/calico.yaml yang akan kita gunakan di bagian ini untuk menginstal jaringan Pod. Jalankan perintah berikut pada master node untuk menginstal jaringan Pod:

kubectl apply -f
   http://docs.projectcalico.org/master/getting-started/
   kubernetes/installation/hosted/kubeadm/calico.yaml

Atau, unduh calico.yaml dan salin ke node master:

scp -i "docker.pem" calico.yaml [email protected]:~

Selanjutnya, jalankan perintah berikut:

kubectl apply -f calico.yaml

Calico dan satu node etcd cluster terinstal, seperti yang ditunjukkan pada Gambar 8.


Gambar 8: Memasang Kebijakan Calico

Selanjutnya, daftarkan semua Pod di semua namespace Kubernetes.

kubectl get pods --all-namespaces

kube-dns Pod harus berjalan, seperti yang tercantum pada Gambar 9.


Gambar 9: Mencantumkan Pod di semua namespace

Menggabungkan Node ke Cluster

Pada bagian ini, kita akan menggabungkan node pekerja ke cluster dengan menggunakan kubeadm join perintah, yang memiliki sintaks berikut:

kubeadm join --token=<token> <master-ip>

Opsional, kubeadm bergabung perintah dapat dijalankan dengan --skip-preflight-checks pilihan untuk melewati validasi awal.

kubeadm bergabung perintah menggunakan token yang disediakan untuk berkomunikasi dengan server API dan mendapatkan sertifikat CA root, dan membuat pasangan kunci lokal. Selanjutnya, permintaan penandatanganan sertifikat (CSR) dikirim ke server API untuk penandatanganan dan kubelet lokal dikonfigurasi untuk terhubung ke server API.

Jalankan kubeadm join perintah disalin dari output kubeadm init perintah pada setiap mesin Ubuntu yang akan bergabung dengan cluster.

Pertama, masuk SSH ke instance Ubuntu:

ssh -i "docker.pem" [email protected]

dan

ssh -i "docker.pem" [email protected]

Selanjutnya, jalankan kubeadm join memerintah. Pertama, beberapa pemeriksaan pra-penerbangan dilakukan. Token yang diberikan divalidasi. Selanjutnya, penemuan simpul digunakan. Klien penemuan info cluster dibuat dan info diminta dari server API. Objek info cluster diterima dan tanda tangan diverifikasi dengan menggunakan token yang diberikan. Tanda tangan dan konten info cluster ditemukan valid dan penemuan node selesai. Selanjutnya, bootstrap node dilakukan, di mana titik akhir API https://10.0.0.129:6443 digunakan untuk membuat koneksi. Selanjutnya, permintaan penandatanganan sertifikat (csr) dibuat dengan menggunakan klien API untuk mendapatkan sertifikat unik untuk node. Setelah sertifikat yang ditandatangani diterima dari server API, file konfigurasi kubelet akan dibuat. Pesan “Node join complete” yang tertera pada Gambar 10 menunjukkan bahwa node telah bergabung dengan cluster.


Gambar 10: Bergabung dengan node ke cluster

Demikian pula, jalankan perintah yang sama di mesin Ubuntu lainnya. Node lain juga bergabung dengan cluster, seperti yang ditunjukkan oleh output pada Gambar 11.


Gambar 11 Bergabung dengan node kedua ke cluster

Pada node master, jalankan perintah berikut untuk membuat daftar node:

kubectl get nodes

Node master dan dua node pekerja harus terdaftar, seperti yang ditunjukkan pada Gambar 12.


Gambar 12: Mencantumkan node cluster Kubernetes

Memasang Contoh Aplikasi

Selanjutnya, kita akan menguji cluster. Jalankan perintah berikut untuk menjalankan nginx - cluster Pod berbasis yang terdiri dari tiga replika:

kubectl -s http://localhost:8080 run nginx
   --image=nginx
   --replicas=3 --port=80

Buat daftar penerapan:

kubectl get deployments

Buat daftar Pod di seluruh cluster:

kubectl get pods -o wide

Mengekspos penerapan sebagai layanan jenis LoadBalancer :

kubectl expose deployment nginx --port=80 --type=LoadBalancer

Buat daftar layanan:

kubectl get services

Output dari perintah sebelumnya menunjukkan nginx deployment telah dibuat, dan ketiga Pod berjalan melintasi dua node pekerja di dalam cluster. Sebuah layanan yang disebut “nginx” juga akan dibuat, seperti yang ditunjukkan pada Gambar 13.


Gambar 13: Menjalankan klaster Pod nginx

Salin IP Cluster layanan. Jalankan perintah curl untuk memanggil layanan:

curl 10.0.0.99

Markup HTML dari layanan mendapatkan output, seperti yang ditunjukkan pada Gambar 14.


Gambar 14: Meminta layanan nginx

Menghapus Instalasi Cluster

Untuk menghapus instalan cluster yang diinstal oleh kubeadm, jalankan perintah berikut:

kubeadm reset

Cluster akan dihapus instalasinya, seperti yang ditunjukkan pada Gambar 15.


Gambar 15: Menghapus/Mereset cluster Kubernetes

Batasan

kubeadm memiliki beberapa keterbatasan dan direkomendasikan hanya untuk penggunaan pengembangan. Batasan kubeadm adalah sebagai berikut;

  • Hanya beberapa OS yang didukung:Ubuntu 16.04+, CentOS 7, HypriotOS v1.0.1+.
  • Tidak cocok untuk penggunaan produksi.
  • Integrasi penyedia cloud bersifat eksperimental.
  • Sebuah cluster dengan hanya satu master dengan database etcd tunggal di dalamnya dibuat. Ketersediaan Tinggi tidak didukung, menyiratkan bahwa master adalah satu titik kegagalan (SPOF).
  • Fungsi HostPort dan HostIP tidak didukung.
  • Beberapa masalah umum lainnya saat kubeadm digunakan dengan RHEL/CentOS 7, dan VirtualBox.

Perkembangan Lebih Lanjut di kubeadm

kubeadm dalam versi alfa di Kubernetes v 1.5 dan dalam versi beta sejak Kubernetes 1.6. Perbaikan kecil dan peningkatan terus saya lakukan pada kubeadm dengan setiap versi Kubernetes baru:

  • Dengan Kubernetes 1.7, modifikasi pada sumber daya internal cluster yang diinstal dengan kubeadm akan ditimpa saat memutakhirkan dari v 1.6 ke v 1.7.
  • Di Kubernetes 1.8, token Bootstrap default dibuat dengan kubeadm init menjadi tidak valid dan dihapus setelah 24 jam dibuat untuk membatasi pemaparan kredensial yang berharga. kubeadm bergabung command mendelegasikan bootstrap TLS ke kubelet iteslf alih-alih mengimplementasikan ulang prosesnya. Bootstrap KubeConfig file ditulis ke /etc/kubernetes/bootstrap-kubelet-conf dengan kubeadm bergabung .

Kesimpulan

Pada artikel ini, kami menggunakan fitur kubeadm tool yang tersedia sejak Kubernetes v1.4 untuk mem-bootstrap cluster Kubernetes. Pertama, binari yang diperlukan untuk Docker, kubectl, kubelet, dan kubeadm diinstal. Selanjutnya, kubeadm init Perintah ini digunakan untuk menginisialisasi node master di cluster. Akhirnya, kubeadm bergabung perintah digunakan untuk menggabungkan node pekerja dengan cluster. Contoh nginx aplikasi dijalankan untuk menguji cluster.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hitung SQL

  2. Meningkatkan Solusi Median Penomoran Baris

  3. Bergabunglah dengan kami di Las Vegas untuk SQLintersection dan hemat $100

  4. Menyampaikan Hadiah Natal:Model Data Santa

  5. Menggunakan Folder Kerja ke Basis Data Kontrol Sumber