Kubernetes 1.17: Yeniliklərin əsas məqamları

Dünən, dekabrın 9-da reallaşdı Kubernetes-in növbəti buraxılışı - 1.17. Bloqumuz üçün formalaşmış ənənəyə uyğun olaraq, yeni versiyada ən əhəmiyyətli dəyişikliklərdən danışırıq.

Kubernetes 1.17: Yeniliklərin əsas məqamları

Bu materialı hazırlamaq üçün istifadə olunan məlumat rəsmi elandan götürülüb, Kubernetes təkmilləşdirmələri izləmə cədvəlləri, DƏYİŞİKLİK-1.17 və əlaqəli məsələlər, çəkmə sorğuları və Kubernetes Təkmilləşdirmə Təklifləri (KEP). Yaxşı, nə yenilik var?..

Topologiyadan xəbərdar marşrutlaşdırma

Kubernetes icması bu xüsusiyyəti çoxdan gözləyirdi - Topologiyadan xəbərdar olan xidmət marşrutu. Əgər KEP 2018-ci ilin oktyabr ayından başlayır və rəsmi genişlənmə — 2 il əvvəl adi məsələlər (kimi o) - və daha bir neçə yaş böyük...

Ümumi ideya Kubernetesdə yaşayan xidmətlər üçün “yerli” marşrutlaşdırmanın həyata keçirilməsini təmin etməkdir. “Yerlilik” bu halda “eyni topoloji səviyyə” deməkdir. (topologiya səviyyəsi), ola bilər:

  • xidmətlər üçün eyni olan node,
  • eyni server çarxı,
  • eyni bölgə
  • eyni bulud provayderi,
  • ...

Bu xüsusiyyətdən istifadə nümunələri:

  • çoxsaylı mövcudluq zonaları (multi-AZ) olan bulud qurğularında trafikə qənaət - bax. təzə illüstrasiya eyni regiondan, lakin AWS-də fərqli AZ-lardan gələn trafik nümunəsindən istifadə etməklə;
  • aşağı performans gecikməsi/daha yaxşı ötürmə qabiliyyəti;
  • hər bir parçadakı qovşaq haqqında yerli məlumatı olan parçalanmış xidmət;
  • logları toplanan proqramlarla eyni qovşaqda fluentd (və ya analoq) yerləşdirilməsi;
  • ...

Topologiya haqqında "bilən" belə marşrutlaşdırmaya analoji olaraq şəbəkə yaxınlığı da deyilir. düyün yaxınlığı, pod yaxınlıq/anti-yaxınlıq və ya ortaya çıxdı çox keçməmiş Topologiyadan xəbərdar olan həcm planlaması (və Həcm Təminatı). Cari icra səviyyəsi ServiceTopology Kubernetesdə - alfa versiyası.

Xüsusiyyətin necə işlədiyi və ondan necə istifadə edə biləcəyiniz haqqında ətraflı məlumat üçün oxuyun Bu məqalə müəlliflərdən birindən.

IPv4/IPv6 ikili yığın dəstəyi

Əhəmiyyətli irəliləyiş qeyd edildi başqa bir şəbəkə xüsusiyyətində: ilk dəfə təqdim edilən iki IP yığını üçün eyni vaxtda dəstək K8s 1.16. Xüsusilə, yeni buraxılış aşağıdakı dəyişiklikləri gətirdi:

  • kube-proxy-də həyata keçirilən hər iki rejimdə eyni vaxtda işləmə imkanı (IPv4 və IPv6);
  • в Pod.Status.PodIPs ortaya çıxdı aşağıya doğru API dəstəyi (eyni zamanda /etc/hosts indi onlar hostdan IPv6 ünvanı əlavə etməyi tələb edirlər);
  • ikili yığın dəstəyi KIND (Kubernetes IN Docker) və kubeadm;
  • yenilənmiş e2e testləri.

Kubernetes 1.17: Yeniliklərin əsas məqamları
İllüstrasiya ikili yığın IPV4/IPv6 istifadə edərək

CSI üzrə irəliləyiş

Stabil elan edildi topologiya dəstəyi CSI əsaslı saxlama üçün ilk olaraq təqdim edildi K8s 1.12.

üçün təşəbbüs həcm plaginlərinin CSI-yə miqrasiyası - CSI Miqrasiya - beta versiyasına çatdı. Bu xüsusiyyət mövcud yaddaş plaginlərini tərcümə etmək üçün vacibdir (ağacda) müasir interfeysə (CSI, ağacdan kənar) Kubernetes son istifadəçiləri üçün görünməzdir. Klaster inzibatçıları yalnız CSI Miqrasiyasını aktivləşdirməli olacaqlar, bundan sonra mövcud dövlət resursları və iş yükləri “sadəcə işləməyə” davam edəcək... lakin Kubernetes nüvəsinə daxil edilmiş köhnəlmiş sürücülərin əvəzinə ən son CSI drayverlərindən istifadə etməklə.

Hazırda AWS EBS sürücüləri üçün miqrasiya beta versiyada hazırdır (kubernetes.io/aws-ebs) və GCE PD (kubernetes.io/gce-pd). Digər anbarlar üçün proqnozlar aşağıdakılardır:

Kubernetes 1.17: Yeniliklərin əsas məqamları

K8-lərdə "ənənəvi" saxlama dəstəyinin CSI-yə necə gəldiyindən danışdıq Bu məqalə. Və CSI miqrasiyasının beta vəziyyətinə keçidinə həsr edilmişdir ayrıca nəşr layihə bloqunda.

Bundan əlavə, K1.17s 8-də yaranan (alfa tətbiqi) CSI kontekstində daha bir əhəmiyyətli funksionallıq Kubernetes 1.12 buraxılışında beta statusuna çatdı (yəni standart olaraq aktivdir) - snapshotların yaradılması və onlardan sağalma. Beta buraxılış yolunda Kubernetes Volume Snapshot-a edilən dəyişikliklər arasında:

  • CSI xarici snapshotter yan avtomobilini iki nəzarətçiyə bölmək,
  • silinmək üçün əlavə sirr (silinmə sirri) həcmli snapshotun məzmununa annotasiya kimi,
  • yeni yekunlaşdırıcı (yekunlaşdırıcı) qalıq bağlantılar varsa, snapshot API obyektinin silinməsinin qarşısını almaq üçün.

1.17 buraxılışı zamanı xüsusiyyət üç CSI sürücüsü tərəfindən dəstəklənir: GCE Persistent Disk CSI Driver, Portworx CSI Driver və NetApp Trident CSI Driver. Onun həyata keçirilməsi və istifadəsi haqqında daha ətraflı məlumatı burada tapa bilərsiniz bu nəşrin blogda.

Bulud Provayderi Etiketləri

Avtomatik olaraq etiketləyir istifadə olunan bulud provayderindən asılı olaraq yaradılmış qovşaqlara və həcmlərə təyin edilir, çox uzun müddətdir ki, Kubernetes-də beta versiyası olaraq mövcuddur - K8s 1.2-nin buraxılmasından bəri (Aprel 2016!). Onların bu qədər uzun müddətdir geniş istifadəsini nəzərə alaraq, tərtibatçılar Rəşidi, xüsusiyyəti sabit (GA) elan etməyin vaxtıdır.

Buna görə də, onların hamısı müvafiq olaraq adlandırıldı (topologiyaya görə):

  • 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

... lakin hələ də köhnə adları altında mövcuddur (geri uyğunluq üçün). Bununla belə, bütün idarəçilərə cari etiketlərə keçmək tövsiyə olunur. Əlaqədar Sənədlər K8s yeniləndi.

kubeadm-in strukturlaşdırılmış çıxışı

İlk dəfə alfa versiyada təqdim olunur kubeadm yardım proqramı üçün strukturlaşdırılmış çıxış. Dəstəklənən formatlar: JSON, YAML, Go şablonu.

Bu xüsusiyyəti həyata keçirmək üçün motivasiya (müvafiq olaraq KEP) budur:

Kubernetes əl ilə yerləşdirilə bilsə də, bu əməliyyat üçün de-fakto (de-yure deyilsə) standart kubeadm-dən istifadə etməkdir. Terraform kimi populyar sistem idarəetmə alətləri Kubernetes yerləşdirilməsi üçün kubeadm-ə əsaslanır. Cluster API-də planlaşdırılan təkmilləşdirmələrə kubeadm və cloud-init ilə Kubernetes açılışı üçün tərtib edilə bilən paket daxildir.

Strukturlaşdırılmış çıxış olmadan, hətta ilk baxışdan ən zərərsiz dəyişikliklər Terraform, Cluster API və kubeadm nəticələrini istifadə edən digər proqram təminatını poza bilər.

Dərhal planlarımıza aşağıdakı kubeadm əmrləri üçün dəstək (strukturlaşdırılmış çıxış şəklində) daxildir:

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

Əmrə JSON cavabının təsviri 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="
}

Digər yeniliklərin sabitləşməsi

Ümumiyyətlə, Kubernetes 1.17-nin buraxılışı “ şüarı altında baş tutdu.Sabitlik" Bu, bir çox xüsusiyyətlərin olması ilə asanlaşdırıldı (onların ümumi sayı 14) GA statusu aldı. Onların arasında:

Digər dəyişikliklər

Kubernetes 1.17-dəki yeniliklərin tam siyahısı, əlbəttə ki, yuxarıda sadalananlarla məhdudlaşmır. Budur digərləri (və daha tam siyahı üçün baxın DƏYİŞİM):

  • Son buraxılışda təqdim olunan xüsusiyyət beta versiyasına çatıb RunAsUserName pəncərələr üçün;
  • oxşar dəyişiklik düşdü EndpointSlice API (həmçinin K8s 1.16-dan), lakin indiyə qədər Endpoint API-nin performansını/miqyaslanmasını təkmilləşdirmək üçün bu həll standart olaraq aktiv edilməyib;
  • podlar indi klaster əməliyyatı üçün vacibdir yaradıla bilər təkcə ad boşluqlarında deyil kube-system (ətraflı məlumat üçün sənədlərə baxın Prioritet Class istehlakını məhdudlaşdırın);
  • kubelet üçün yeni seçim - --reserved-cpus — sistem üçün ayrılmış CPU-ların siyahısını açıq şəkildə müəyyən etməyə imkan verir;
  • uğrunda kubectl logs təqdim etdi yeni bayraq --prefix, jurnalın hər sətirinə pod və mənbə konteynerinin adının əlavə edilməsi;
  • в label.Selector əlavə etdi RequiresExactMatch;
  • kube-dns-dəki bütün konteynerlər indi qaçırlar daha az imtiyazlarla;
  • hiperkub ayrıca GitHub repozitoriyasına ayrılır və artıq Kubernetes buraxılışlarına daxil edilməyəcək;
  • çox təkmilləşdirilmiş performans UDP olmayan portlar üçün kube-proxy.

Asılılıq dəyişiklikləri:

  • kubeadm-ə daxil olan CoreDNS versiyası 1.6.5;
  • crictl versiyası v1.16.1-ə yeniləndi;
  • CSI 1.2.0;
  • və s. 3.4.3;
  • Ən son sınaqdan keçirilmiş Docker versiyası 19.03-ə yüksəldildi;
  • Kubernetes 1.17 qurmaq üçün tələb olunan minimum Go versiyası 1.13.4-dür.

PS

Bloqumuzda da oxuyun:

Mənbə: www.habr.com

Добавить комментарий