Saya telah membuat pod dengan type:deployment
tetapi saya melihat bahwa beberapa penggunaan dokumentasi type:pod
, lebih khusus dokumentasi untuk pod multi-kontainer :
apiVersion: v1
kind: Pod
metadata:
name: ""
labels:
name: ""
namespace: ""
annotations: []
generateName: ""
spec:
? "// See 'The spec schema' for details."
: ~
Tetapi untuk membuat pod, saya hanya bisa menggunakan tipe penempatan :
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: ""
spec:
replicas: 3
template:
metadata:
labels:
app: ""
spec:
containers:
etc
Saya perhatikan dokumentasi pod mengatakan:
Perintah create dapat digunakan untuk membuat pod secara langsung, atau dapat membuat pod atau pod melalui Deployment. Sangat disarankan agar Anda menggunakan Penempatan untuk membuat pod Anda. Ini menonton untuk pod gagal dan akan memulai pod baru seperti yang diperlukan untuk mempertahankan nomor yang ditentukan. Jika Anda tidak ingin Penyebaran memantau pod Anda (mis. Pod Anda menulis data yang tidak persisten yang tidak akan bertahan hidup restart, atau pod Anda dimaksudkan untuk berumur pendek), Anda dapat membuat pod langsung dengan perintah create.
Catatan: Sebaiknya gunakan Penempatan untuk membuat pod. Anda harus menggunakan petunjuk di bawah ini hanya jika Anda tidak ingin membuat Penempatan.
Tapi ini menimbulkan pertanyaan apa kind:pod
gunanya? Bisakah Anda, entah bagaimana, merujuk pod dalam penerapan? Saya tidak melihat jalan. Sepertinya yang Anda dapatkan dengan pod adalah beberapa metadata tambahan tetapi tidak ada opsi penyebaran seperti replica
atau kebijakan mulai ulang. Apa gunanya pod yang tidak bertahan data, bertahan restart? Saya pikir saya bisa membuat pod multi-kontainer dengan penyebaran juga.
sumber
Jawaban Radek sangat baik, tetapi saya ingin menarik dari pengalaman saya, Anda hampir tidak akan pernah menggunakan objek dengan pod jenis , karena itu tidak masuk akal dalam praktek.
Karena Anda memerlukan objek penyebaran - atau objek API Kubernetes lainnya seperti pengontrol replikasi atau replicaset - yang perlu menjaga replika (polong) tetap hidup (itulah titik menggunakan kubernetes).
Apa yang akan Anda gunakan dalam praktik untuk aplikasi tipikal adalah:
Objek penyebaran (tempat Anda akan menentukan wadah aplikasi Anda) yang akan menampung wadah aplikasi Anda dengan beberapa spesifikasi lainnya.
Objek layanan (yang seperti objek pengelompokan dan memberinya apa yang disebut IP virtual (cluster IP) untuk
pods
yang memiliki label tertentu - dan itupods
pada dasarnya adalah wadah aplikasi yang Anda gunakan dengan objek penempatan sebelumnya .Anda harus memiliki objek layanan karena objek
pods
penyebaran bisa dimatikan, ditingkatkan dan diturunkan, dan Anda tidak dapat mengandalkan alamat IP mereka karena mereka tidak akan bertahan lama.Jadi Anda memerlukan objek seperti layanan , yang memberikan mereka
pods
IP yang stabil.Hanya ingin memberi Anda beberapa konteks di sekitar
pods
, sehingga Anda tahu bagaimana segala sesuatu bekerja bersama.Semoga itu membersihkan beberapa hal untuk Anda, belum lama ini saya berada di posisi Anda :)
sumber
kind: Pod
contoh? Misalnya, Cara mengonsumsi Rahasia sebagai env vars: kubernetes.io/docs/concepts/configuration/secret/…helm test
) di mana Anda tidak perlu menjalankan aplikasi selamanya, dan kami tidak perlu beberapa replika, dalam hal itu pod cocok.Kubernetes memiliki tiga Jenis Objek yang harus Anda ketahui:
Pod:
Penyebaran:
Dan saya akan setuju dengan jawaban lain, lupakan Pods dan gunakan Deployment saja. Mengapa? Lihatlah poin kedua, ia memonitor keadaan masing-masing pod, memperbarui seperlunya.
Jadi, alih-alih berjuang dengan pesan kesalahan seperti ini:
Jadi cukup refactor atau buat ulang sepenuhnya Pod Anda menjadi Deployment yang membuat pod untuk melakukan apa yang perlu Anda lakukan. Dengan Deployment Anda dapat mengubah konfigurasi apa pun yang Anda inginkan dan Anda tidak perlu khawatir melihat pesan kesalahan itu.
sumber
Pod adalah contoh wadah.
Itu adalah output dari
replicas: 3
Pikirkan seseorang
deployment
dapat memiliki banyak instance berjalan (replika).sumber
replicas: 3
referensi ke bagian atas gambar, Ini berarti "hei, ketika Anda menjalankan proses ini, buat 3 komputer virtual / nyata - instance.". "penyebaran" seperti itu adalah rumah dan "pod" adalah orang. Satu rumah dan tiga orang di dalamnya yang melakukan pekerjaan. Apa yang ingin Anda lakukan khusus untuk ini?Pod adalah kumpulan wadah dan objek dasar Kuberntes. Semua wadah pod berada di simpul yang sama.
Deployment adalah sejenis pengontrol di Kubernetes.
Controllers use a Pod Template that you provide to create the Pods for which it is responsible.
Penerapan membuat ReplicaSet yang pada gilirannya memastikan bahwa CurrentReplicas selalu sama dengan Replika yang diinginkan.
Keuntungan :
sumber
Saya ingin menambahkan beberapa informasi dari buku Kubernetes In Action , sehingga Anda dapat melihat semua gambar dan menghubungkan hubungan antara sumber daya Kubernetes seperti Pod, Deployment, dan ReplicationController (ReplicaSet)
adalah unit dasar yang dapat digunakan di Kubernetes. Tetapi dalam kasus penggunaan dunia nyata, Anda ingin penyebaran Anda tetap terjaga dan berjalan secara otomatis dan tetap sehat tanpa intervensi manual. Untuk ini, pendekatan yang disarankan adalah menggunakan Deployment , yang di bawah tenda membuat ReplicaSet .
(ReplicaSet memperluas objek lama yang disebut ReplicationController - yang persis sama tetapi tanpa riwayat Revisi.)
ReplicaSet secara konstan memonitor daftar pod yang sedang berjalan dan memastikan jumlah pod yang cocok dengan spesifikasi tertentu selalu cocok dengan nomor yang diinginkan.
adalah sumber daya tingkat yang lebih tinggi yang dimaksudkan untuk menyebarkan aplikasi dan memperbarui secara deklaratif.
Saat Anda membuat Penempatan , sumber daya ReplicaSet dibuat di bawahnya (akhirnya lebih banyak dari mereka). ReplicaSets juga mereplikasi dan mengelola pod. Bila menggunakan Deployment, polong sebenarnya dibuat dan dikelola oleh Deployment ‘s ReplicaSets , bukan oleh Deployment langsung
Mari kita pikirkan apa yang terjadi. Dengan mengubah templat pod di sumber daya Penerapan Anda, Anda telah memperbarui aplikasi Anda ke versi yang lebih baru — dengan mengubah satu bidang!
Akhirnya, kembalikan Penyebaran baik ke revisi sebelumnya atau ke revisi sebelumnya sehingga mudah dengan sumber daya Penyebaran.
Gambar-gambar ini juga dari buku Kubernetes In Action .
sumber
Cobalah untuk menghindari Pods dan mengimplementasikan Deployments sebagai gantinya untuk mengelola kontainer karena objek-objek sejenis Pod tidak akan dijadwal ulang (atau disembuhkan sendiri) jika terjadi kegagalan simpul atau terminasi pod.
Penempatan secara umum lebih disukai karena mendefinisikan ReplicaSet untuk memastikan bahwa jumlah Pod yang diinginkan selalu tersedia dan menetapkan strategi untuk mengganti Pod, seperti RollingUpdate.
sumber
Di kubernetes, Pod adalah unit terkecil yang dapat digunakan. Setiap kali ketika kita membuat objek kubernetes seperti Penyebaran, replika-set, set statefuls, daemonset itu membuat pod.
Seperti disebutkan di atas, penyebaran membuat pod berdasarkan keadaan yang diinginkan yang disebutkan dalam objek penempatan Anda. Jadi misalnya Anda ingin 5 replika aplikasi, Anda sebutkan
replicas: 5
dalam manifes penyebaran Anda. Sekarang pengendali penyebaran bertanggung jawab untuk membuat 5 replika identik (tidak kurang, tidak lebih) dari aplikasi yang diberikan dengan semua metadata seperti kebijakan RBAC, kebijakan jaringan, label, anotasi, pemeriksaan kesehatan, kuota sumber daya, noda / toleransi dan lain-lain dan bergaul dengan masing-masing pod itu menciptakan.Ada beberapa kasus ketika Anda ingin membuat pod, misalnya jika Anda menjalankan tes sespan di mana Anda tidak perlu menjalankan aplikasi selamanya, Anda tidak perlu beberapa replika, dan Anda menjalankan aplikasi ketika Anda ingin mengeksekusi di dalamnya case pod cocok. Misalnya
helm test
, yang merupakan definisi pod yang menentukan wadah dengan perintah yang diberikan untuk dijalankan.sumber