Kubernetes 1.17: ringkesan saka inovasi utama

wingi, 9 Desember, dumadi release sabanjure Kubernetes - 1.17. Miturut tradisi sing wis dikembangake kanggo blog kita, kita ngomong babagan owah-owahan sing paling penting ing versi anyar.

Kubernetes 1.17: ringkesan saka inovasi utama

Informasi sing digunakake kanggo nyiapake materi iki dijupuk saka woro-woro resmi, Tabel nelusuri paningkatan Kubernetes, CHANGELOG-1.17 lan masalah sing gegandhengan, panjaluk tarik, lan Usul Peningkatan Kubernetes (KEP). Dadi, apa sing anyar? ..

Topologi-aware routing

Komunitas Kubernetes wis suwe ngenteni fitur iki - Topologi-sadar layanan nuntun. Yen KAB iku asalé ing Oktober 2018, lan resmi penambahan - 2 taun kepungkur, masalah biasanipun (kaya iku) - lan sawetara taun luwih tuwa ...

Ide umum yaiku nyedhiyakake kemampuan kanggo ngetrapake rute "lokal" kanggo layanan sing manggon ing Kubernetes. "Lokalitas" ing kasus iki tegese "tingkat topologi sing padha" (tingkat topologi), sing bisa dadi:

  • node identik kanggo layanan,
  • rak server sing padha,
  • wilayah sing padha
  • panyedhiya awan sing padha,
  • ...

Conto nggunakake fitur iki:

  • tabungan ing lalu lintas ing panginstalan maya karo sawetara zona kasedhiyan (multi-AZ) - ndeleng. ilustrasi seger nggunakake conto lalu lintas saka wilayah sing padha, nanging beda AZ ing AWS;
  • latensi kinerja sing luwih murah / throughput sing luwih apik;
  • layanan sharded sing nduweni informasi lokal babagan simpul ing saben shard;
  • penempatan fluentd (utawa analog) ing simpul sing padha karo aplikasi sing diklumpukake log;
  • ...

Rute kasebut, sing "ngerti" babagan topologi, uga diarani afinitas jaringan - kanthi analogi karo afinitas simpul, polong karemenan / anti-afinitas utawa katon durung suwe Penjadwalan Volume Topologi-Aware (lan Penyediaan Volume). Tingkat implementasine saiki ServiceTopology ing Kubernetes - versi alpha.

Kanggo rincian babagan cara kerjane fitur lan kepiye sampeyan bisa nggunakake, waca artikel iki saka salah sawijining penulis.

Dhukungan tumpukan dual IPv4/IPv6

kemajuan pinunjul tetep ing fitur jaringan liyane: support simultaneous kanggo loro tumpukan IP, kang pisanan ngenalaken ing K8s 1.16. Khususé, rilis anyar nggawa owah-owahan ing ngisor iki:

  • ing kube-proxy dileksanakake kamungkinan operasi simultan ing loro mode (IPv4 lan IPv6);
  • в Pod.Status.PodIPs muncul dhukungan kanggo API mudhun (ing wektu sing padha ing /etc/hosts saiki mbutuhake host kanggo nambah alamat IPv6);
  • ndhukung dual tumpukan ANAK (Kubernetes IN Docker) lan kubeadm;
  • dianyari tes e2e.

Kubernetes 1.17: ringkesan saka inovasi utama
Gambaran nggunakake dual tumpukan IPV4 / IPv6 ing KIND

Kemajuan ing CSI

Diumumake stabil dhukungan topologi kanggo panyimpenan basis CSI, pisanan ngenalaken ing K8s 1.12.

Inisiatif kanggo migrasi plugin volume menyang CSI - CSI Migrasi - tekan versi beta. Fitur iki penting kanggo nerjemahake plugin panyimpenan sing wis ana (ing wit) menyang antarmuka modern (CSI, out-of-tree) ora katon kanggo pangguna pungkasan Kubernetes. Administrator kluster mung kudu ngaktifake Migrasi CSI, sawise sumber daya lan beban kerja sing ana bakal terus "mung bisa" ... nanging nggunakake driver CSI paling anyar tinimbang sing wis lawas sing kalebu ing inti Kubernetes.

Saiki, migrasi kanggo driver AWS EBS wis siyap ing versi beta (kubernetes.io/aws-ebs) lan GCE PD (kubernetes.io/gce-pd). Prakiraan kanggo fasilitas panyimpenan liyane kaya ing ngisor iki:

Kubernetes 1.17: ringkesan saka inovasi utama

We ngedika bab carane "tradisional" support panyimpenan ing K8s teka CSI ing artikel iki. Lan transisi migrasi CSI menyang status beta darmabakti kanggo publikasi kapisah ing blog proyek.

Kajaba iku, fungsi penting liyane ing konteks CSI, sing asale (implementasi alpha) ing K1.17s 8, tekan status beta (yaiku diaktifake kanthi standar) ing release Kubernetes 1.12 - nggawe jepretan lan Recovery saka wong-wong mau. Antarane owah-owahan sing digawe kanggo Kubernetes Volume Snapshot ing cara kanggo rilis beta:

  • pamisah sidecar external-snapshotter CSI dadi rong pengontrol,
  • ditambahake rahasia kanggo mbusak (rahasia penghapusan) minangka anotasi kanggo isi snapshot volume,
  • finalis anyar (pamungkas) kanggo nyegah obyek API gambar asli saka dibusak yen ana sambungan isih.

Nalika rilis 1.17, fitur kasebut didhukung dening telung driver CSI: GCE Persistent Disk CSI Driver, Portworx CSI Driver lan NetApp Trident CSI Driver. Rincian liyane babagan implementasine lan panggunaan bisa ditemokake ing publikasi iki ing blog.

Label Panyedhiya Cloud

Label sing otomatis ditugasake menyang simpul lan volume sing digawe gumantung saka panyedhiya maya sing digunakake, wis kasedhiya ing Kubernetes minangka versi beta kanggo wektu sing suwe - wiwit diluncurake K8s 1.2 (April 2016!). Diwenehi panggunaan sing nyebar nganti suwe, pangembang mutusaké, iku wektu kanggo ngumumake fitur stabil (GA).

Mulane, kabeh padha diganti jeneng (miturut topologi):

  • beta.kubernetes.io/instance-typenode.kubernetes.io/instance-type
  • failure-domain.beta.kubernetes.io/zonetopology.kubernetes.io/zone
  • failure-domain.beta.kubernetes.io/regiontopology.kubernetes.io/region

... nanging isih kasedhiya ing jeneng lawas (kanggo kompatibilitas mundur). Nanging, kabeh administrator dianjurake kanggo ngalih menyang label saiki. Dokumentasi sing gegandhengan K8s wis dianyari.

Output terstruktur saka kubeadm

Disajikake ing versi alpha kanggo pisanan output terstruktur kanggo utilitas kubeadm. Format sing didhukung: JSON, YAML, Go template.

Motivasi kanggo ngleksanakake fitur iki (miturut KAB) yaiku:

Nalika Kubernetes bisa disebarake kanthi manual, standar de facto (yen ora de jure) kanggo operasi iki yaiku nggunakake kubeadm. Piranti manajemen sistem populer kaya Terraform gumantung ing kubeadm kanggo penyebaran Kubernetes. Dandan sing direncanakake kanggo API Kluster kalebu paket sing bisa digabung kanggo bootstrap Kubernetes nganggo kubeadm lan cloud-init.

Tanpa output kabentuk, malah owah-owahan paling innocuous ing kawitan marketing bisa break Terraform, Cluster API lan piranti lunak liyane sing nggunakake asil kubeadm.

Rencana langsung kita kalebu dhukungan (ing wangun output terstruktur) kanggo printah kubeadm ing ngisor iki:

  • alpha certs
  • config images list
  • init
  • token create
  • token list
  • upgrade plan
  • version

Ilustrasi respon JSON kanggo printah kubeadm init -o json:

{
  "node0": "192.168.20.51:443",
  "caCrt": "sha256:1f40ff4bd1b854fb4a5cf5d2f38267a5ce5f89e34d34b0f62bf335d74eef91a3",
  "token": {
    "id":          "5ndzuu.ngie1sxkgielfpb1",
    "ttl":         "23h",
    "expires":     "2019-05-08T18:58:07Z",
    "usages":      [
      "authentication",
      "signing"
    ],
    "description": "The default bootstrap token generated by 'kubeadm init'.",
    "extraGroups": [
      "system:bootstrappers:kubeadm:default-node-token"
    ]
  },
  "raw": "Rm9yIHRoZSBhY3R1YWwgb3V0cHV0IG9mIHRoZSAia3ViZWFkbSBpbml0IiBjb21tYW5kLCBwbGVhc2Ugc2VlIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL2FrdXR6LzdhNjg2ZGU1N2JmNDMzZjkyZjcxYjZmYjc3ZDRkOWJhI2ZpbGUta3ViZWFkbS1pbml0LW91dHB1dC1sb2c="
}

Stabilisasi inovasi liyane

Umumé, rilis Kubernetes 1.17 ditindakake kanthi motto "Stabilitas" Iki difasilitasi kanthi kasunyatan manawa ana akeh fitur (jumlah total yaiku 14) nampa status GA. Ing antarane:

Pangowahan liyane

Dhaptar lengkap inovasi ing Kubernetes 1.17, mesthi ora diwatesi karo sing kasebut ing ndhuwur. Mangkene sawetara liyane (lan kanggo dhaptar sing luwih lengkap, deleng CHANGELOG):

  • Fitur sing ditampilake ing rilis pungkasan wis tekan versi beta RunAsUserName kanggo windows;
  • owah-owahan padha kedadosan EndpointSlice API (uga saka K8s 1.16), nanging saiki solusi iki kanggo nambah kinerja / skalabilitas saka Endpoint API ora diaktifake minangka standar;
  • polong saiki kritis kanggo operasi kluster bisa digawe ora mung ing namespaces kube-system (kanggo rincian, deleng dokumentasi kanggo Batasi konsumsi Kelas Prioritas);
  • opsi anyar kanggo kubelet - --reserved-cpus - ngidini sampeyan nemtokake kanthi jelas dhaptar CPU sing dilindhungi undhang-undhang kanggo sistem kasebut;
  • kanggo kubectl logs diwenehi gendéra anyar --prefix, nambahake jeneng pod lan wadhah sumber kanggo saben baris log;
  • в label.Selector ditambahake RequiresExactMatch;
  • kabeh wadhah ing kube-dns saiki mlaku kanthi hak istimewa kurang;
  • hyperkube dipisahake dadi repositori GitHub sing kapisah lan ora bakal dilebokake maneh ing rilis Kubernetes;
  • akeh kinerja apik kube-proxy kanggo port non-UDP.

Owah-owahan gumantung:

  • Versi CoreDNS kalebu ing kubeadm yaiku 1.6.5;
  • versi crictl dianyari v1.16.1;
  • CSI 1.2.0;
  • etcd 3.4.3;
  • Versi Docker sing diuji paling anyar dianyari dadi 19.03;
  • Versi Go minimal sing dibutuhake kanggo mbangun Kubernetes 1.17 yaiku 1.13.4.

PS

Waca uga ing blog kita:

Source: www.habr.com

Add a comment