Kubernetes 1.11 dirilis pada
hari Rabu . Kami melanjutkan tradisi kami dan berbicara tentang perubahan paling signifikan, berdasarkan data dari
CHANGELOG-1.11 dan berbagai masalah, menarik permintaan dan proposal desain. Apa yang baru di K8 1.11?
Jaringan
Mari kita mulai dengan jaringan, karena pengumuman Kubernetes 1.11 menandai stabilisasi resmi
(yaitu, transfer ke status Ketersediaan Umum) dari dua inovasi penting yang disajikan dalam rilis sebelumnya. Yang pertama adalah
load balancing layanan di dalam cluster, berdasarkan
IPVS (IP Virtual Server).
Peluang ini datang dari
Huawei yang musim semi lalu mempresentasikan kepada masyarakat hasil pekerjaannya untuk meningkatkan penyeimbangan muatan 50+ ribu layanan menggunakan IPVS, bukan iptables. Pilihan
ini dijelaskan secara logis: “Jika iptables dibuat untuk firewall dan didasarkan pada daftar aturan di kernel, maka IPVS dirancang untuk load balancing dan didasarkan pada tabel hash di kernel; selain itu, IPVS mendukung algoritma penyeimbangan beban lebih maju daripada iptables, serta sejumlah fitur berguna lainnya (misalnya, pemeriksaan status, coba lagi, dll.). "
Geser dari Scaling Kubernetes Huawei ke Mendukung presentasi 50.000 Layanan di KubeCon Europe 2017Apa yang dipraktikkannya? “Bandwidth jaringan yang lebih baik, lebih sedikit latensi perangkat lunak
[berbicara tentang waktu yang dibutuhkan untuk titik akhir baru untuk ditambahkan ke layanan - kira - kira. perev. ] dan skalabilitas yang lebih baik untuk load balancer di cluster. " Versi alpha dari mode IPVS untuk kube-proxy muncul di
Kubernetes 1.8 dan telah berkembang menjadi stabil dengan rilis saat ini 1.11: meskipun secara default masih tidak diaktifkan, sudah resmi siap untuk melayani lalu lintas di kluster produksi.
Fitur matang kedua adalah
CoreDNS sebagai server DNS yang digunakan oleh kluster Kubernetes. Kami menulis lebih banyak tentang solusi ini dalam tinjauan
terpisah , dan singkatnya, ini adalah server DNS yang fleksibel dan mudah diperluas, awalnya didasarkan pada server web
Caddy , yang menjadi penerus
SkyDNS (omong-omong, kube-dns sendiri juga berdasarkan pada itu digantikan oleh CoreDNS) , ditulis dalam Go dan berfokus pada dunia cloud (aplikasi cloud). CoreDNS yang patut dicatat lainnya adalah kenyataan bahwa itu tampaknya merupakan satu-satunya file yang dapat dieksekusi dan satu-satunya proses dalam sistem. Sekarang ini bukan hanya opsi DNS lain untuk kluster Kubernetes, tetapi juga opsi default untuk
kubeadm . Instruksi untuk menggunakan CoreDNS di Kubernet tersedia di
sini (dan untuk Cluster Federation, di
sini ).
Di antara pembaruan lainnya di "dunia" jaringan Kubernetes:
- dalam NetworkPolicies sekarang mungkin untuk menentukan subas spesifik di ruang nama lain menggunakan
namespaceSelector
dan podSelector
; - layanan sekarang dapat mendengarkan pada port host yang sama pada antarmuka yang berbeda (ditentukan dalam
--nodeport-addresses
); - memperbaiki bug yang disebabkan oleh Kubelet saat menggunakan
--node-ip
berhenti melaporkan ExternalDNS
, InternalDNS
, dan ExternalIP
.
Fasilitas penyimpanan
Diperkenalkan di
Kubernetes 1.9 fitur perlindungan terhadap penghapusan PVC (
PersistentVolumeClaims
) yang digunakan oleh semua pod dan PV (
PersistentVolumes
) yang diikat ke PVC, kemudian
(dalam K8 1.10) disebut
StorageProtection , dinyatakan stabil.
Kemampuan untuk mengubah ukuran volume (PV) setelah memulai ulang tungku telah diterjemahkan ke dalam status beta, dan dalam versi alfa,
mengubah ukuran volume secara real time telah tersedia, mis. tanpa perlu me-reboot perapian.
Untuk mendukung AWS EBS dan GCE PD, batas untuk jumlah volume maksimum yang mungkin terhubung ke host ditingkatkan, dan di plug-in AWS EBS, Azure Disk, GCE PD dan Ceph RBD
menerapkan dukungan untuk penyediaan volume dinamis perangkat blok mentah. Untuk volume AWS EBS
, kemampuan untuk menggunakan pod dalam mode
ReadOnly
juga telah
ditambahkan .
Selain itu, Kubernetes 1.11 memperkenalkan versi alfa
dukungan untuk batas dinamis pada volume tergantung pada jenis node, serta dukungan API untuk volume blok di driver penyimpanan eksternal CSI (
Container Storage Interface - muncul di
Kubernetes 1.9 ). Selain itu, CSI
menerapkan integrasi dengan
mesin pendaftaran plugin
Kubelet baru.
Node gugus
5 perubahan besar teratas dari rilis Kubernetes 1.11 juga termasuk
transfer ke status versi beta dari konfigurasi dinamis Kubelet , yang pertama kali muncul di
K8 1.8 dan memerlukan beberapa perubahan (Anda dapat melacaknya di
tiket Konfigurasi Dynamic Kubelet asli ). Fitur ini memungkinkan meluncurkan konfigurasi
Kubelet baru pada cluster yang aktif dan berfungsi (berlawanan dengan situasi sebelumnya, ketika pengaturan untuk
Kubelet dilewatkan melalui bendera baris perintah). Untuk menggunakannya, Anda harus mengatur opsi
--dynamic-config-dir
(ketika
Kubelet mulai).
Proyek
cri-tools telah dinyatakan stabil. Ini menawarkan alat untuk administrator sistem yang memungkinkan Anda untuk menganalisis dan men-debug operasi node dalam produksi, terlepas dari runtime wadah yang digunakan. Paket-paket dengan itu (
crictl
) sekarang
dikirim dengan sisa utilitas
kubeadm (dalam format DEB dan RPM).
Kami menulis lebih banyak tentang tujuan dan kemampuan crictl
dalam artikel baru - baru ini tentang integrasi contenterd dengan Kubernetes, menggantikan Docker "tradisional".
Contoh penggunaan crictl
dari dokumentasi proyekDukungan eksperimental
untuk sysctls di Linux telah
dikonversi ke status beta (diaktifkan secara default menggunakan flag fitur
Sysctls
).
PodSecurityPolicy
dan
Pod
memiliki bidang khusus untuk menentukan / mengendalikan
sistem .
Juga di
ResourceQuota
menjadi mungkin untuk menentukan kelas prioritas (dalam hal ini, kuota hanya berlaku untuk pod dengan kelas ini - lihat
desain-proposal untuk detail), dan kondisi
ContainersReady
telah
ditambahkan ke status pod.
Hak dan Keamanan
Fitur
Agregasi ClusterRole yang diperkenalkan di K8s 1.9, yang memungkinkan Anda untuk menambahkan
izin ke peran yang ada (termasuk yang dibuat secara otomatis), dinyatakan stabil tanpa menerima perubahan apa pun. Peran terpisah untuk cluster-autoscaler (
ClusterRole
) juga
telah ditambahkan - ini digunakan sebagai ganti sistem (
cluster-admin ).
Sejumlah pekerjaan telah dilakukan untuk transparansi apa (dan mengapa) yang terjadi di dalam cluster. Secara khusus, informasi RBAC dalam log audit sekarang
berisi anotasi tambahan untuk acara :
authorization.k8s.io/decision
- allow
atau forbid
;authorization.k8s.io/reason
- alasan yang bisa dibaca manusia untuk keputusan tersebut.
Juga di log audit
ditambahkan informasi tentang akses dari
PodSecurityPolicy
dalam bentuk anotasi
podsecuritypolicy.admission.k8s.io/admit-policy
dan
podsecuritypolicy.admission.k8s.io/validate-policy
(kebijakan apa yang diizinkan di bawah ini?).
Utilitas Konsol
Banyak (walaupun tidak begitu signifikan, tetapi berguna!) Perbaikan disajikan dalam alat Kubernetes CLI:
kubectl wait
baru kubectl wait
saat ketika sumber daya yang ditentukan dihapus atau kondisi tertentu tercapai.kubectl api-resources
baru untuk melihat sumber daya:

- Dukungan penyelesaian otomatis untuk
kubectl cp
. - Fungsi base64decode telah tersedia di
base64decode
Go, nama yang berbicara sendiri. - Menambahkan dukungan untuk flag
--dry-run
di kubectl patch
. --match-server-version
menjadi global - kubectl version
juga akan memperhitungkannya.kubectl config view --minify
sekarang mempertimbangkan flag context
global.kubectl apply --prune
sumber daya kubectl apply --prune
ditambahkan ke kubectl apply --prune
CronJob
.
Perubahan lainnya
- Penjadwal ( kube-scheduler ) mempelajari cara merencanakan pod di
DaemonSet
(versi alpha). - Dimungkinkan untuk menentukan grup pengguna sistem tertentu (
RunAsGroup
) untuk kontainer di perapian (versi alpha). - Kemampuan untuk menghapus anak yatim (hapus anak yatim ) untuk
CustomResources
. - Peningkatan dalam dukungan API Kubernetes untuk perapian dan kontainer di Windows - menambahkan metrik untuk perapian, wadah dan sistem file dengan log, konteks scurity
run_as_user
, volume konstan lokal dan fstype untuk drive Azure. - Azure menambahkan dukungan untuk penyeimbang beban SKU standar dan IP publik.
Kompatibilitas
- Versi etcd yang didukung adalah 3.2.18 (Kubernetes 1.10 adalah 3.1.12).
- Versi terverifikasi Docker - dari 1.11.2 hingga 1.13.1 dan 17.03.x (belum berubah sejak rilis K8 1.10).
- Versi Go adalah 1.10.2 (bukan 1.9.3), minimum yang didukung adalah 1.9.1.
- Versi CNI adalah 0.6.0.
- Versi CSI adalah 0.3.0 (bukan 0.2.0).
PS
Baca juga di blog kami: