Kubernetes 1.17: اہم اختراعات کا جائزہ

کل، 9 دسمبر، واقعہ پیش آیا Kubernetes کی اگلی ریلیز - 1.17۔ اس روایت کے مطابق جو ہمارے بلاگ کے لیے تیار ہوئی ہے، ہم نئے ورژن میں اہم ترین تبدیلیوں کے بارے میں بات کرتے ہیں۔

Kubernetes 1.17: اہم اختراعات کا جائزہ

اس مواد کو تیار کرنے کے لیے استعمال ہونے والی معلومات سرکاری اعلان سے لی گئی ہیں، Kubernetes میں اضافہ ٹریکنگ ٹیبلز, چینج 1.17 اور متعلقہ مسائل، پل کی درخواستیں، اور Kubernetes Enhancement Proposals (KEP)۔ تو کیا نیا هے؟..

ٹوپولوجی سے آگاہ روٹنگ

Kubernetes کمیونٹی کافی عرصے سے اس فیچر کا انتظار کر رہی تھی - ٹاپولوجی سے آگاہ سروس روٹنگ. اگر CAP یہ اکتوبر 2018 میں شروع ہوتا ہے، اور سرکاری اضافہ - 2 سال پہلے، معمول کے مسائل (جیسے اس کے) - اور کچھ سال بڑے...

عام خیال یہ ہے کہ Kubernetes میں رہائش پذیر خدمات کے لیے "مقامی" روٹنگ کو نافذ کرنے کی صلاحیت فراہم کی جائے۔ اس معاملے میں "مقامی" کا مطلب ہے "ایک ہی ٹاپولوجیکل سطح" (ٹاپولوجی کی سطح)، جو ہو سکتا ہے:

  • خدمات کے لیے یکساں نوڈ،
  • ایک ہی سرور ریک،
  • ایک ہی علاقہ
  • وہی کلاؤڈ فراہم کنندہ،
  • ...

اس خصوصیت کو استعمال کرنے کی مثالیں:

  • ایک سے زیادہ دستیابی والے زون (ملٹی اے زیڈ) کے ساتھ کلاؤڈ تنصیبات میں ٹریفک پر بچت - دیکھیں۔ تازہ مثال ایک ہی علاقے سے ٹریفک کی مثال استعمال کرتے ہوئے، لیکن AWS میں مختلف AZs؛
  • کم کارکردگی میں تاخیر/بہتر تھرو پٹ؛
  • ایک شارڈ سروس جس میں ہر شارڈ میں نوڈ کے بارے میں مقامی معلومات ہوتی ہیں۔
  • ان ایپلی کیشنز کے ساتھ ایک ہی نوڈ پر روانی (یا اینالاگ) کی جگہ کا تعین جن کے لاگز جمع کیے گئے ہیں۔
  • ...

اس طرح کی روٹنگ، جو ٹوپولوجی کے بارے میں "جانتی ہے" کو نیٹ ورک وابستگی بھی کہا جاتا ہے - اس کے ساتھ مشابہت سے نوڈ وابستگی, پوڈ وابستگی / مخالف وابستگی یا ظاہر ہوا؟ اتنی دیر پہلے نہیں ٹوپولوجی سے آگاہ والیوم شیڈولنگ (اور حجم کی فراہمی)۔ نفاذ کی موجودہ سطح ServiceTopology Kubernetes میں - الفا ورژن۔

فیچر کیسے کام کرتا ہے اور آپ اسے پہلے سے کیسے استعمال کر سکتے ہیں اس بارے میں تفصیلات کے لیے پڑھیں یہ مضمون مصنفین میں سے ایک سے۔

IPv4/IPv6 ڈوئل اسٹیک سپورٹ

اہم پیشرفت طے شدہ نیٹ ورک کی ایک اور خصوصیت میں: دو IP سٹیکس کے لیے بیک وقت سپورٹ، جو کہ پہلی بار متعارف کرایا گیا تھا۔ K8s 1.16. خاص طور پر، نئی ریلیز میں درج ذیل تبدیلیاں آئیں:

  • کیوب پراکسی میں لاگو کیا دونوں طریقوں (IPv4 اور IPv6) میں بیک وقت آپریشن کا امکان؛
  • в Pod.Status.PodIPs نمودار ہوا نیچے کی طرف API کے لئے سپورٹ (ایک ہی وقت میں جیسا کہ میں /etc/hosts اب انہیں ایک IPv6 ایڈریس شامل کرنے کے لیے میزبان کی ضرورت ہوتی ہے؛
  • دوہری اسٹیک سپورٹ قسم (کوبرنیٹس ان ڈوکر) اور kubeadm;
  • تازہ کاری شدہ e2e ٹیسٹ۔

Kubernetes 1.17: اہم اختراعات کا جائزہ
مثال KIND میں ڈوئل اسٹیک IPV4/IPv6 استعمال کرنا

CSI پر پیشرفت

مستحکم قرار دیا گیا۔ ٹوپولوجی کی حمایت CSI پر مبنی اسٹوریج کے لیے، پہلے متعارف کرایا گیا K8s 1.12.

کے لیے پہل حجم پلگ ان کی CSI میں منتقلی۔ - CSI مائیگریشن - بیٹا ورژن تک پہنچ گیا۔ موجودہ اسٹوریج پلگ ان کا ترجمہ کرنے کے لیے یہ خصوصیت اہم ہے۔ (درخت میں) ایک جدید انٹرفیس پر (CSI، درخت سے باہر) Kubernetes کے آخری صارفین کے لیے پوشیدہ۔ کلسٹر ایڈمنسٹریٹرز کو صرف CSI مائیگریشن کو فعال کرنے کی ضرورت ہوگی، جس کے بعد موجودہ ریاستی وسائل اور کام کا بوجھ "صرف کام" کرتے رہیں گے... لیکن Kubernetes کور میں شامل فرسودہ ڈرائیوروں کی بجائے جدید ترین CSI ڈرائیورز کا استعمال کریں۔

اس وقت، AWS EBS ڈرائیوروں کے لیے منتقلی بیٹا ورژن میں تیار ہے (kubernetes.io/aws-ebs) اور GCE PD (kubernetes.io/gce-pd)۔ دیگر سٹوریج کی سہولیات کے لیے پیشین گوئیاں حسب ذیل ہیں:

Kubernetes 1.17: اہم اختراعات کا جائزہ

ہم نے اس بارے میں بات کی کہ K8s میں "روایتی" اسٹوریج سپورٹ کس طرح CSI میں آیا یہ مضمون. اور CSI ہجرت کی بیٹا اسٹیٹس میں منتقلی کے لیے وقف ہے۔ علیحدہ اشاعت پروجیکٹ بلاگ پر۔

اس کے علاوہ، CSI کے تناظر میں ایک اور اہم فعالیت، جو K1.17s 8 میں شروع ہوتی ہے (الفا نفاذ)، Kubernetes 1.12 ریلیز میں بیٹا کی حیثیت (یعنی ڈیفالٹ کے طور پر فعال) تک پہنچ گئی۔ سنیپ شاٹس بنانا اور ان سے بازیابی. بیٹا ریلیز کے راستے پر Kubernetes والیوم سنیپ شاٹ میں کی گئی تبدیلیوں میں سے:

  • CSI بیرونی سنیپ شاٹر سائڈ کار کو دو کنٹرولرز میں تقسیم کرنا،
  • حذف کرنے کے لیے راز شامل کر دیا گیا۔ (حذف کرنے کا راز) والیوم اسنیپ شاٹ کے مشمولات کی تشریح کے طور پر،
  • نیا فائنلائزر (فائنلائزر) اسنیپ شاٹ API آبجیکٹ کو حذف ہونے سے روکنے کے لیے اگر باقی کنکشن موجود ہیں۔

ریلیز 1.17 کے وقت، فیچر کو تین CSI ڈرائیورز کی مدد حاصل ہے: GCE Persistent Disk CSI ڈرائیور، Portworx CSI ڈرائیور اور NetApp Trident CSI ڈرائیور۔ اس کے نفاذ اور استعمال کے بارے میں مزید تفصیلات اس میں مل سکتی ہیں۔ اس اشاعت بلاگ پر

کلاؤڈ فراہم کرنے والے لیبلز

لیبل جو خود بخود استعمال شدہ کلاؤڈ فراہم کنندہ کے لحاظ سے تخلیق شدہ نوڈس اور حجم کو تفویض کیا گیا ہے۔K8s 1.2 کی ریلیز کے بعد سے، بہت طویل عرصے سے Kubernetes میں بیٹا ورژن کے طور پر دستیاب ہے۔ (اپریل 2016!). اتنے عرصے تک ان کے وسیع پیمانے پر استعمال کو دیکھتے ہوئے، ڈویلپرز فیصلہ کیا، کہ یہ فیچر کو مستحکم (GA) کا اعلان کرنے کا وقت ہے۔

لہذا، ان سب کا نام اسی کے مطابق رکھا گیا (ٹوپولاجی کے لحاظ سے):

  • 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

... لیکن اب بھی ان کے پرانے ناموں سے دستیاب ہیں (پیچھے کی طرف مطابقت کے لیے)۔ تاہم، تمام منتظمین کو موجودہ لیبلز پر سوئچ کرنے کی سفارش کی جاتی ہے۔ متعلقہ دستاویزات K8s کو اپ ڈیٹ کر دیا گیا ہے۔

kubeadm کی ساختی پیداوار

پہلی بار الفا ورژن میں پیش کیا گیا۔ kubeadm یوٹیلیٹی کے لیے ساختی آؤٹ پٹ. معاون فارمیٹس: JSON، YAML، Go ٹیمپلیٹ۔

اس خصوصیت کو لاگو کرنے کے لئے حوصلہ افزائی (کے مطابق CAP) ہے:

جب کہ Kubernetes کو دستی طور پر تعینات کیا جا سکتا ہے، اس آپریشن کے لیے ڈی فیکٹو (اگر ڈی جیور نہیں) کا معیار kubeadm کا استعمال کرنا ہے۔ مقبول سسٹمز مینجمنٹ ٹولز جیسے Terraform Kubernetes کی تعیناتی کے لیے kubeadm پر انحصار کرتے ہیں۔ کلسٹر API میں منصوبہ بند بہتریوں میں kubeadm اور cloud-init کے ساتھ Kubernetes بوٹسٹریپنگ کے لیے ایک کمپوز ایبل پیکیج شامل ہے۔

ساختی آؤٹ پٹ کے بغیر، پہلی نظر میں انتہائی بے ضرر تبدیلیاں بھی Terraform، Cluster API اور دوسرے سافٹ ویئر کو توڑ سکتی ہیں جو kubeadm کے نتائج کو استعمال کرتے ہیں۔

ہمارے فوری منصوبوں میں درج ذیل kubeadm کمانڈز کے لیے سپورٹ (سٹرکچرڈ آؤٹ پٹ کی شکل میں) شامل ہے:

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

ایک کمانڈ پر JSON کے جواب کی مثال 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="
}

دیگر بدعات کا استحکام

عام طور پر، Kubernetes 1.17 کی رہائی اس نعرے کے تحت ہوئی تھی۔استحکام" یہ اس حقیقت کی طرف سے سہولت فراہم کی گئی تھی کہ اس میں بہت سے خصوصیات (ان کی کل تعداد ہے 14) نے GA کا درجہ حاصل کیا۔ ان کے درمیان:

دیگر تبدیلیاں۔

Kubernetes 1.17 میں ایجادات کی مکمل فہرست، یقیناً، اوپر دی گئی فہرستوں تک محدود نہیں ہے۔ یہاں کچھ دوسرے ہیں (اور مزید مکمل فہرست کے لیے، دیکھیں چینجیلوگ):

  • آخری ریلیز میں پیش کردہ فیچر بیٹا ورژن تک پہنچ گیا ہے۔ RunAsUserName کھڑکیوں کے لیے;
  • اسی طرح کی تبدیلی پڑی EndpointSlice API (K8s 1.16 سے بھی)، تاہم ابھی کے لیے Endpoint API کی کارکردگی/اسکیل ایبلٹی کو بہتر بنانے کے لیے یہ حل بطور ڈیفالٹ فعال نہیں ہے۔
  • پوڈز اب کلسٹر آپریشن کے لیے اہم ہیں۔ بنایا جا سکتا ہے نہ صرف نام کی جگہوں میں kube-system (تفصیلات کے لیے، دستاویزات دیکھیں ترجیحی کلاس کی کھپت کو محدود کریں۔);
  • کبلیٹ کے لیے نیا آپشن - --reserved-cpus — آپ کو سسٹم کے لیے مخصوص CPUs کی فہرست کو واضح طور پر بیان کرنے کی اجازت دیتا ہے۔
  • لیے kubectl logs پیش کیا نیا پرچم --prefix, لاگ کی ہر لائن میں پوڈ اور سورس کنٹینر کا نام شامل کرنا؛
  • в label.Selector شامل کیا RequiresExactMatch;
  • kube-dns میں تمام کنٹینرز اب چل رہے ہیں کم مراعات کے ساتھ؛
  • ہائپر کیوب ایک علیحدہ GitHub ذخیرہ میں الگ کیا گیا ہے اور اب اسے Kubernetes ریلیز میں شامل نہیں کیا جائے گا۔
  • زیادہ سے زیادہ بہتر کارکردگی kube-proxy غیر UDP پورٹس کے لیے۔

انحصار تبدیلیاں:

  • kubeadm میں شامل CoreDNS ورژن 1.6.5 ہے؛
  • crictl ورژن v1.16.1 میں اپ ڈیٹ کیا گیا؛
  • CSI 1.2.0;
  • etcd 3.4.3؛
  • تازہ ترین ٹیسٹ شدہ ڈوکر ورژن کو 19.03 میں اپ گریڈ کیا گیا ہے۔
  • Kubernetes 1.17 بنانے کے لیے کم از کم گو ورژن 1.13.4 ہے۔

PS

ہمارے بلاگ پر بھی پڑھیں:

ماخذ: www.habr.com

نیا تبصرہ شامل کریں