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

Alternatif Kubernetes untuk Perintah Docker

Docker biasanya memberikan pengantar pertama pengembang ke container. Kubernetes adalah platform orkestrasi yang memecahkan tantangan seputar menjalankan container dalam produksi. Inilah cara Docker memerintahkan map ke rekan-rekan Kubernetes mereka.

Anda tidak dapat menggunakan docker CLI untuk berinteraksi dengan container yang berjalan di Kubernetes. Kubernetes menyediakan antarmuka baris perintahnya sendiri, kubectl , untuk membantu Anda mengelola cluster. Baca panduan kami untuk memulai kubectl jika Anda tidak terbiasa dengan alat ini.

Tak satu pun dari docker perintah memiliki nama yang sama di kubectl . Kubernetes mengekspos fungsionalitas dengan caranya sendiri. Beban kerja itu sendiri pada dasarnya berbeda – Docker dirancang untuk bekerja dengan satu container pada satu waktu, sedangkan Kubernetes memungkinkan orkestrasi beberapa replika.

Poin pertama yang harus diapresiasi adalah pergeseran terminologi. Docker mengacu pada "wadah" sementara Kubernetes menggunakan "pod". Pod mungkin menjalankan satu container atau beberapa replika yang dikelola sebagai satu unit. Selain detail ini, ketika Anda melihat "wadah" di Docker, Anda harus memikirkan "pod" Kubernetes. Istilah tersebut akan digunakan secara bergantian untuk sisa artikel ini.

Mendapatkan Detail Kontainer Anda

Di Docker, Anda menggunakan docker ps -a untuk melihat semua container di mesin Anda.

Setara Kubernetes terdekat adalah kubectl get pods .

Output dari kedua perintah tersebut sangat berbeda. Docker menampilkan lebih banyak informasi tentang beban kerja yang dijalankan container.

Kubernetes akan memberikan detail tentang gambar dan perintah saat menggunakan describe pod memerintah. Anda harus memberikan nama pod. Ini memberikan lebih banyak informasi verbose, menggunakan daftar daripada tabel.

Menjalankan Perintah dalam Container

Docker memungkinkan Anda menjalankan perintah dalam wadah yang sedang berjalan menggunakan docker exec .

Setara Kubernetes juga disebut exec . Gunakan nama pod Kubernetes alih-alih nama container Docker. Perintah ditentukan sedikit berbeda – itu harus dipisahkan dari nama pod dengan -- urutan.

Anda dapat menggunakan -it flag untuk mendapatkan akses interaktif dengan cara yang sama seperti Docker. Ini adalah singkatan dari --stdin --tty dan harus digunakan kapan pun Anda ingin meluncurkan shell di dalam pod. Tentukan nama shell, seperti bash , sebagai perintah.

Kubectl mendukung attach perintah ketika Anda ingin melampirkan proses dalam wadah yang sudah berjalan. Cara kerjanya mirip dengan docker attach tetapi Anda harus melewati -it tandai jika Anda membutuhkan akses interaktif.

Melihat Log Kontainer

Untuk melihat log container dengan Docker, Anda menggunakan docker logs memerintah. Menambahkan -f switch akan “mengikuti” log sehingga log tersebut terus dialirkan ke terminal Anda.

logs Kubectl perintah memiliki sintaks yang sama. Berikan nama pod dengan cara yang sama seperti Docker menerima nama container.

Baik Docker dan Kubernetes mengumpulkan log dari keluaran standar dan kesalahan standar (stdout /stderr ) aliran kontainer yang sedang berjalan. Kubernetes menangani restart container secara berbeda dengan Docker. Sedangkan di Docker, wadah yang dimulai ulang menambahkan lognya ke yang sudah ada, Kubernetes membuat log baru untuk setiap proses. Anda bisa mendapatkan log dari wadah yang diganti dengan menambahkan --previous tandai ke logs perintah.

Membuat Kontainer

Kontainer Docker dibuat dengan run memerintah. Inilah cara Anda memulai nginx server dengan Docker:

docker run -d --name nginx --restart=always -p 80:80 nginx

Ini membuat wadah menggunakan nginx gambar dasar dan mengaturnya untuk memulai ulang secara otomatis. Server terikat ke port HTTP default 80.

Kubernetes mengharuskan Anda memikirkan abstraksi tingkat tinggi saat menambahkan container ke cluster Anda. Alih-alih menjalankan penampung, Anda membuat penerapan untuk mewakili beban kerja Anda:

kubectl create deployment --image=nginx nginx

Ini akan membuat nginx penyebaran. Pod dimulai secara otomatis; di dalam pod, akan ada wadah yang menjalankan server web.

Membuat penerapan tidak akan mengikat wadahnya ke port mana pun. Server yang baru dibuat belum dapat diakses. Port harus terbuka melalui layanan . Pod bersifat sementara dan mungkin berisi beberapa kontainer yang direplikasi. Layanan mendefinisikan kumpulan logis dari pod dan memungkinkan Anda menetapkan sumber daya jaringan seperti alamat IP dan port.

Mengekspos nginx penyebaran pada port 80 akan memungkinkan server untuk diakses:

kubectl expose deployment nginx --port=80 --name nginx-http

Mencoba mengakses port 80 pada alamat IP default cluster sekarang akan mengarahkan Anda ke nginx server.

Kubectl tidak secara langsung mendukung docker run lainnya opsi seperti pembuatan volume dan pengikatan mount. Kontainer yang memerlukan penyimpanan persisten harus memiliki volume yang dikonfigurasi secara manual melalui kubectl perintah atau manifes volume.

Menghapus Kontainer

Kontainer buruh pelabuhan dihapus menggunakan docker rm perintah dengan ID wadah.

Kubernetes tidak mengizinkan Anda menghapus container secara langsung. Sebagai gantinya, Anda bekerja dengan penerapan yang menciptakan pod. Gunakan kubectl delete deployment perintah, meneruskan nama penerapan.

Docker memungkinkan Anda untuk berhenti wadah alih-alih mengeluarkannya. Kubernetes telah menghapus dukungan untuk tindakan ini. Cara yang disarankan untuk menangguhkan penerapan untuk sementara adalah dengan menurunkan jumlah replikanya ke 0. Tanpa pod yang berjalan, beban kerja akan dihentikan secara efektif.

kubectl scale --replicas=0 deployment/my-deployment

Saat Anda siap untuk melanjutkan penerapan, jalankan scale perintah lagi. Setel jumlah replika baru ke 1 atau lebih tinggi. Menggunakan lebih banyak replika dapat meningkatkan ketersediaan beban kerja Anda.

Kesimpulan

Tidak ada paralel langsung antara CLI Docker dan kubectl . Sebagian besar perintah Kubernetes memiliki sintaks yang berbeda dengan rekan-rekan Docker mereka. Anda perlu mempelajari istilah dan opsi baru sebelum dapat mentransisikan alur kerja berbasis Docker ke Kubernetes.

Dalam banyak kasus, tidak ada kubectl alternatif untuk kemampuan Docker CLI. Fungsionalitas Docker difokuskan pada konsep container. Kubernetes mengambilnya dan menempatkannya di pusat ekosistem sumber daya yang sangat berkembang.

Kontainer jarang ditangani secara terpisah. Sebagai gantinya, Anda harus bekerja dengan sumber daya seperti penerapan, layanan, dan set replika. Inilah sebabnya mengapa mempelajari Kubernetes bisa terasa menantang saat mendekatinya dari sudut pandang pengguna Docker.

Jika Anda terbiasa dengan dasar-dasar Docker, transisi ke Kubernetes seharusnya relatif mudah. Perbedaan prinsipnya adalah apa yang dilihat Docker sebagai wadah biasanya diakses sebagai "pod" agregat di Kubernetes. Pod dibuat oleh “deployment” yang mewakili beban kerja di cluster Anda. Jika ragu, lihat kubectl docs untuk menemukan kecocokan yang sesuai untuk perintah Docker.


Docker
  1. Beberapa Perintah DOCKER

  2. Buruh pelabuhan

  3. Apa itu containerd, Dan Bagaimana Hubungannya dengan Docker dan Kubernetes?

  1. Perintah Docker Lembar Cheat Referensi Cepat

  2. Pengantar Docker

  3. Perintah Docker menggantung tanpa respons

  1. Cara Menginstal Kubernetes di Ubuntu 18.04

  2. Cara Menginstal Docker di Fedora 32 atau 31 (dan Alternatif)

  3. Jalankan dua perintah dengan docker exec