GNU/Linux >> Belajar Linux >  >> Panels >> Docker

Cara Menskalakan Kontainer Docker di Seluruh Server Menggunakan Kubernetes

Docker adalah platform containerization berorientasi pengembang yang memungkinkan Anda mengemas aplikasi sebagai container mandiri. Mereka akan berjalan di mana pun runtime container yang kompatibel tersedia.

Popularitas Docker membuatnya hampir identik dengan wadah, namun itu bukan teknologi yang sempurna untuk semua kasus penggunaan. Menggunakan Docker apa adanya menghadirkan tantangan dalam produksi karena CLI-nya hanya dilengkapi untuk mengelola container individual.

Kubernetes adalah platform orkestrasi yang mengelola tumpukan kontainer dan menskalakannya di beberapa server. Anda dapat menerapkan di seluruh armada alat berat fisik, meningkatkan redundansi dan ketahanan layanan Anda. Berikut cara memulai cluster Anda sendiri untuk menskalakan container “Docker” Anda.

Dasar-Dasar Kubernetes

Mengenali beberapa istilah kunci Kubernetes akan membantu Anda memahami perbedaan dibandingkan dengan Docker. Kamus Kubernetes menjelaskan lusinan sumber daya yang dapat Anda tambahkan ke klaster Anda. Hanya komponen yang mengontrol penjadwalan container yang relevan dengan artikel ini.

Pada level tinggi, penginstalan Kubernetes adalah sekelompok “node.” Node adalah mesin fisik independen yang menampung beban kerja Anda. Satu node “master” bertanggung jawab untuk mengoordinasikan (“mengatur”) operasi cluster dengan “menjadwalkan” container baru ke node pekerja yang paling tepat.

Berikut adalah beberapa istilah penting:

  • Guru – Node master mengoperasikan cluster. Ini adalah mesin tempat Anda menginstal Kubernetes. Ini menjalankan bidang kontrol dan mendelegasikan hosting aplikasi dalam container ke node pekerja.
  • Pesawat Kontrol – Bidang kontrol adalah komponen perangkat lunak dari node master. Ini menggabungkan beberapa layanan, termasuk server API, penyimpanan konfigurasi, dan penjadwal kontainer.
  • Simpul – Node adalah mesin yang menghosting container Anda. Setiap pekerja menjalankan komponen Kubernetes yang disebut Kubelet. Ini tetap berhubungan dengan bidang kontrol, menerima instruksi penjadwalan yang bertindak untuk menyediakan kontainer baru.
  • Pod – Pod adalah unit komputasi terkecil dalam cluster Kubernetes, yang mewakili sekelompok instance container. Abstraksi Pod memungkinkan Anda berinteraksi dengan beberapa container yang sedang berjalan secara agregat.
  • Set Replika – Set replika bertanggung jawab untuk menskalakan Pod untuk memastikan jumlah replika tertentu tersedia. Jika kamu meminta tiga replika Pod, kumpulan replika akan menjamin batasan ketersediaan terpenuhi. Pod secara otomatis diganti jika gagal, memungkinkan Anda mengotomatiskan replikasi container di seluruh server.

Membuat cluster yang dapat diskalakan memerlukan node master, setidaknya dua node pekerja, dan penerapan yang menyediakan beberapa replika. Kubernetes akan dapat menjadwalkan Pod Anda di semua node yang tersedia, memberi Anda ketahanan jika ada yang mengalami gangguan.

Membuat Cluster Anda

Kubernetes tersedia sebagai penawaran terkelola dari sebagian besar penyedia cloud utama. Ini menyediakan cara sekali klik untuk membuat bidang kontrol Anda dan menambahkan sejumlah variabel node pekerja.

Anda dapat menjalankan cluster pada perangkat keras Anda sendiri menggunakan distribusi Kubernetes mandiri seperti MicroK8s. Anda memerlukan setidaknya dua mesin fisik atau virtual yang terisolasi jika Anda ingin memiliki dukungan penjadwalan yang berlebihan.

Instal MicroK8s di kedua mesin. Tentukan satu node sebagai master dan gunakan add-node perintah untuk memulai proses registrasi node:

microk8s add-node

Ini akan memancarkan microk8s join memerintah. Beralih ke simpul sekunder Anda dan jalankan perintah. Ia akan bergabung dengan cluster pertama sebagai pekerja baru. Sekarang kedua mesin siap untuk menampung beban kerja dalam container Anda.

Mendefinisikan Penerapan Penskalaan Horizontal

Aplikasi yang berjalan di beberapa server digambarkan sebagai "skala horizontal." Itu menyebar sendiri di beberapa lingkungan yang berbeda. Penskalaan sistem secara vertikal melibatkan penambahan sumber daya ke lingkungan yang ada.

Cara paling sederhana untuk mendefinisikan beban kerja Kubernetes adalah dengan Deployment. Jenis sumber daya ini membuat Pod dari image container dan mengatur rute jaringan publik melalui sebuah layanan. Deployment default ke satu instance Pod tetapi dapat dikonfigurasi dengan beberapa replika.

Berikut adalah manifes Penerapan sederhana:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80

Terapkan manifes ke cluster Anda menggunakan Kubectl:

microk8s kubectl apply -f ./manifest.yaml

Kubernetes akan membuat tiga Pod, masing-masing menampung server web NGINX yang dibuat dari nginx:latest gambar. Port 80 diekspos sebagai port kontainer untuk mengaktifkan lalu lintas masuk.

Pod akan secara otomatis didistribusikan ke seluruh node cluster Anda. Sebuah node akan memenuhi syarat untuk menghosting sebuah Pod jika ia dapat menyediakan sumber daya yang cukup.

Anda dapat memperbarui jumlah replika kapan saja. Ubah replicas di manifes Anda dan terapkan kembali ke cluster Anda. Penjadwal Kubernetes akan mengambil tindakan untuk menyediakan Pod baru atau menghentikan Pod lama sesuai kebutuhan. Jika Anda menskalakan replicas hingga 0, Anda dapat membuat aplikasi offline tanpa benar-benar menghapus penerapan atau sumber daya yang terkait.

Menambahkan Node Secara Dinamis

Memperbarui jumlah replika memungkinkan Anda memanfaatkan sumber daya yang ada dalam cluster Anda. Pada akhirnya, Anda mungkin menghabiskan kapasitas node gabungan Anda sama sekali, mencegah Pod baru untuk dijadwalkan. Kubernetes menawarkan fasilitas penskalaan otomatis cluster yang dapat membuat dan menghancurkan Node , secara efektif mengubah jumlah Pod yang dapat dijadwalkan.

Menyiapkan penskalaan otomatis relatif terlibat. Proses yang tepat tergantung pada lingkungan hosting cluster Anda. Ini membutuhkan integrasi dengan Cluster Autoscaler yang mampu menghubungkan ke host Anda untuk mendeteksi perubahan permintaan. Dokumentasi resmi tersedia untuk Google Cloud; solusi juga tersedia dari Amazon EKS dan Microsoft AKS.

Penskalaan otomatis bekerja dengan mempertahankan pemeriksaan konstan untuk Pod yang tidak dapat dijadwalkan karena kapasitas cluster yang tidak mencukupi. Itu juga menilai apakah Pod yang dijadwalkan dengan sukses benar-benar dapat ditempatkan dengan jumlah node yang berkurang. Auto-scaler kemudian menggunakan API penyedia cloud Anda untuk menambah dan menghapus instance komputasi, menyesuaikan sumber daya cluster Anda secara dinamis. Hal ini dapat memengaruhi tagihan Anda karena membuat instans baru biasanya merupakan operasi yang dikenakan biaya.

Ringkasan

Kubernetes memudahkan untuk mendistribusikan instance container di beberapa server. Daftarkan mesin Anda sebagai node, atau gunakan cluster cloud terkelola, lalu buat Deployment yang memiliki replicas set lapangan. Anda dapat menskalakan beban kerja dengan memperbarui jumlah replika yang diminta.

Ketika perubahan besar dalam permintaan diantisipasi, gunakan penskalaan otomatis untuk memperluas kapasitas secara dinamis. Fitur ini memungkinkan Anda membuat Node baru dengan cepat, menambahkan sumber daya tambahan sehingga Anda dapat terus meningkatkan jumlah replika Anda.

Saat Anda menskalakan Pod, Anda perlu mengingat bahwa beberapa bentuk distribusi lalu lintas masuk juga diperlukan. Jika Anda mengekspos port 80, Kubernetes harus dapat memetakan permintaan ke port 80 di apa saja dari node. Ini bekerja secara otomatis dengan Deployments dan Services. Kubernetes membuat Load Balancer yang terus memantau Pod untuk mengetahui ke mana lalu lintas dapat diarahkan.


Docker
  1. Cara menginstal WordPress menggunakan Docker

  2. Cara Menggunakan Tulis Docker

  3. Bagaimana Melewati Variabel Lingkungan ke Docker Containers

  1. Bagaimana Menghubungkan Kontainer Docker

  2. Cara Mendaftar Kontainer Docker

  3. Cara Menginstal Docker di CentOS

  1. Bagaimana Mengelola Kontainer Docker? Praktik terbaik

  2. Docker vs. Kubernetes

  3. Cara Mengelola Kontainer Docker menggunakan Portainer di Ubuntu