Kubernetes සඳහා ක්‍රියාකරුවන්: ප්‍රකාශිත යෙදුම් ධාවනය කරන්නේ කෙසේද

Kubernetes හි ප්‍රකාශිත යෙදුම්වල ගැටලුව

වින්‍යාස කිරීම, දියත් කිරීම සහ යෙදුම් සහ සේවාවන් තවදුරටත් පරිමාණය කිරීම, අස්ථායී ලෙස වර්ගීකරණය කරන ලද අවස්ථා සම්බන්ධයෙන් සරල ය, i.e. දත්ත ඉතිරි නොකර. Kubernetes හි සම්මත API භාවිතයෙන් එවැනි සේවාවන් ක්‍රියාත්මක කිරීම පහසුය, මන්ද සෑම දෙයක්ම කොටුවෙන් පිටත සිදු වේ: සම්මත වින්‍යාසයන්ට අනුව, කිසිදු විශේෂත්වයක් සහ මැජික් සම්බන්ධ නොවී.

සරලව කිවහොත්, බහාලුම් වලින් පොකුරක් තුළ PHP/Ruby/Python පසුපෙළේ තවත් පිටපත් පහක් ධාවනය කිරීමට, ඔබට අවශ්‍ය වන්නේ නව සේවාදායකයක් 5 වතාවක් ඔසවා මූලාශ්‍ර පිටපත් කිරීම පමණි. ප්‍රභව කේතය සහ init ස්ක්‍රිප්ට් දෙකම රූපයේ ඇති බැවින්, අස්ථායී යෙදුමක් පරිමාණය කිරීම ඉතා ප්‍රාථමික වේ. බහාලුම් සහ ක්ෂුද්‍ර සේවා ගෘහ නිර්මාණ ශිල්පයට ආදරය කරන්නන් හොඳින් දන්නා පරිදි, දුෂ්කරතා ආරම්භ වේ රාජ්ය අයදුම්පත්, i.e. දත්ත සමුදායන් සහ හැඹිලි (MySQL, PostgreSQL, Redis, ElasticSearch, Cassandra...) වැනි දත්ත අඛණ්ඩව පැවතීම සමඟින්. මෙය ගණපූර්ණ පොකුරක් ස්වාධීනව ක්‍රියාත්මක කරන මෘදුකාංග දෙකටම අදාළ වේ (උදාහරණයක් ලෙස, Percona XtraDB සහ Cassandra), සහ වෙනම කළමනාකරණ උපයෝගිතා අවශ්‍ය මෘදුකාංග (Redis, MySQL, PostgreSQL ... වැනි).

ප්‍රභව කේතය සහ සේවාව දියත් කිරීම ප්‍රමාණවත් නොවන නිසා දුෂ්කරතා පැන නගී - ඔබට තවත් ක්‍රියා කිහිපයක් සිදු කිරීමට අවශ්‍ය වේ. අවම වශයෙන්, දත්ත පිටපත් කරන්න සහ / හෝ පොකුරට සම්බන්ධ වන්න. වඩාත් නිවැරදිව කිවහොත්, දත්ත නැතිවීම සහ තාවකාලිකව නොලැබීමකින් තොරව ඒවා නිසි ලෙස පරිමාණය කිරීම, යාවත්කාලීන කිරීම සහ නැවත වින්‍යාස කිරීම සඳහා මෙම සේවාවන්ට අවබෝධයක් අවශ්‍ය වේ. මෙම අවශ්‍යතා සඳහා ගිණුම්කරණය "මෙහෙයුම් දැනුම" (මෙහෙයුම් දැනුම) ලෙස හැඳින්වේ.

CoreOS ක්රියාකරුවන්

මෙහෙයුම් දැනුම "වැඩසටහන්" කිරීම සඳහා, පසුගිය වසර අවසානයේ CoreOS ව්යාපෘතිය හඳුන්වා දී ඇත Kubernetes වේදිකාව සඳහා "නව මෘදුකාංග පන්තියක්" - ක්රියාකරුවන් (ක්රියාකරුවන්, ඉංග්රීසි "මෙහෙයවීම", එනම් "මෙහෙයවීම").

ක්‍රියාකරුවන්, Kubernetes හි මූලික හැකියාවන් භාවිතා කිරීම සහ පුළුල් කිරීම (ඇතුළු. StatefulSets, වෙනස්කම් සඳහා පහත බලන්න) යෙදුම් කේතයට මෙහෙයුම් දැනුම එක් කිරීමට DevOps හට ඉඩ දෙන්න.

ක්රියාකරුගේ අරමුණ - කුබර්නෙට්ස් පොකුරක් තුළ ඇති රාජ්‍ය යෙදුමක බොහෝ ආයතන කළමනාකරණය කිරීමට ඔබට ඉඩ සලසන API සමඟ පරිශීලකයාට ලබා දෙන්න පොකුර). ඇත්ත වශයෙන්ම, ක්‍රියාකරු සැලසුම් කර ඇත්තේ හැකිතාක් පොකුරු තුළ ඇති යෙදුම සමඟ වැඩ සරල කිරීමට, කලින් අතින් විසඳිය යුතු මෙහෙයුම් කාර්යයන් ස්වයංක්‍රීය කිරීම සඳහා ය.

ක්රියාකරුවන් වැඩ කරන ආකාරය

අනුරූ කට්ටල Kubernetes ඔබට අවශ්‍ය ධාවන කරල් ගණන නියම කිරීමට ඉඩ සලසයි, සහ පාලකයන් ඔවුන්ගේ සංඛ්‍යාව පවත්වා ගෙන යන බවට සහතික කරයි (කරල් නිර්මාණය කිරීම සහ මකා දැමීම මගින්). ඒ හා සමානව, ක්‍රියාකරු ක්‍රියා කරන්නේ සම්මත Kubernetes සම්පතට සහ පාලකයට මෙහෙයුම් දැනුමක් එකතු කිරීමෙනි, අවශ්‍ය යෙදුම් ආයතන සංඛ්‍යාව පවත්වා ගැනීමට අමතර ක්‍රියා කිරීමට ඔබට ඉඩ සලසයි.

මෙය වෙනස් වන්නේ කෙසේද StatefulSetsදත්ත ගබඩා කිරීම හෝ ස්ථිතික IP වැනි රාජ්‍ය සම්පත් ලබා දීමට පොකුරට අවශ්‍ය යෙදුම් සඳහා? එවැනි යෙදුම් සඳහා, ක්රියාකරුවන් භාවිතා කළ හැක StatefulSets (වෙනුවට අනුරූ කට්ටල) පදනමක් ලෙස, පිරිනැමීම අතිරේක ස්වයංක්රීයකරණය: බිඳවැටීම් වලදී අවශ්‍ය ක්‍රියා සිදු කිරීම, උපස්ථ සෑදීම, වින්‍යාසය යාවත්කාලීන කිරීම යනාදිය.

එසේ නම්, එය සියල්ල ක්‍රියා කරන්නේ කෙසේද? ක්‍රියාකරු යනු පාලක ඩීමන් ය:

  1. Kubernetes හි සිදුවීම් API වෙත දායක වේ;
  2. පද්ධතිය පිළිබඳ දත්ත එයින් ලබා ගනී (එය ගැන අනුරූ කට්ටල, කරල් ආහාරයට ගැනීම, සේවා සහ යනාදි.);
  3. පිළිබඳ තොරතුරු ලැබේ තෙවන පාර්ශවීය සම්පත් (පහත උදාහරණ බලන්න);
  4. පෙනුමට/වෙනස්වීමට ප්‍රතික්‍රියා කරයි තෙවන පාර්ශවීය සම්පත් (උදාහරණයක් ලෙස, ප්‍රමාණය වෙනස් කිරීම, අනුවාදය වෙනස් කිරීම සහ යනාදිය);
  5. පද්ධතියේ තත්වයෙහි වෙනසක් සඳහා ප්රතිචාර දක්වයි (එය ගැන අනුරූ කට්ටල, කරල් ආහාරයට ගැනීම, සේවා සහ යනාදි.);
  6. වඩාත්ම වැදගත්:
    1. ඔබට අවශ්‍ය සියල්ල සෑදීමට Kubernetes API වෙත ප්‍රවේශ වේ (නැවතත්, ඔබේම අනුරූ කට්ටල, කරල් ආහාරයට ගැනීම, සේවා...),
    2. යම් මැජික් සිදු කරයි (සරල බව සඳහා, ක්‍රියාකරු විසින්ම කරල් තුළට ගොස් විධාන අමතන බව ඔබට සිතිය හැකිය, උදාහරණයක් ලෙස, පොකුරට සම්බන්ධ වීමට හෝ අනුවාදය යාවත්කාලීන කිරීමේදී දත්ත ආකෘතිය උත්ශ්‍රේණි කිරීමට).

Kubernetes සඳහා ක්‍රියාකරුවන්: ප්‍රකාශිත යෙදුම් ධාවනය කරන්නේ කෙසේද
ඇත්ත වශයෙන්ම, ඔබට පින්තූරයෙන් පෙනෙන පරිදි, වෙනම යෙදුමක් හුදෙක් Kubernetes වෙත එකතු කරනු ලැබේ (සාමාන්‍ය යෙදවීම с අනුරූ කට්ටලය), එය ක්රියාකරු ලෙස හැඳින්වේ. එය සාමාන්‍ය පොඩ් එකක (සාමාන්‍යයෙන් තනි එකක්) ජීවත් වන අතර, රීතියක් ලෙස, වගකිව යුත්තේ තමන්ගේම සඳහා පමණි නාමපුවරුව. මෙම ක්‍රියාකරු යෙදුම එහි API ක්‍රියාත්මක කරයි - කෙසේ වෙතත්, කෙලින්ම නොව, හරහා තෙවන පාර්ශවීය සම්පත් Kubernetes හි.

මේ අනුව, අපි නිර්මාණය කළ පසු නාමපුවරුව ක්රියාකරු, අපට එය එකතු කළ හැකිය තෙවන පාර්ශවීය සම්පත්.

ආදිය සඳහා උදාහරණයක් (පහත විස්තර බලන්න):

apiVersion: etcd.coreos.com/v1beta1
kind: Cluster
metadata:
  name: example-etcd-cluster
spec:
  size: 3
  version: 3.1.0

ඉලාස්ටික් සෙවුම් සඳහා උදාහරණය:

apiVersion: enterprises.upmc.com/v1
kind: ElasticsearchCluster
metadata:
  name: example-es-cluster
spec:
  client-node-replicas: 3
  master-node-replicas: 2
  data-node-replicas: 3
  zones:
  - us-east-1c
  - us-east-1d
  - us-east-1e
  data-volume-size: 10Gi
  java-options: "-Xms1024m -Xmx1024m"
  snapshot:
    scheduler-enabled: true
    bucket-name: elasticsnapshots99
    cron-schedule: "@every 2m"
  storage:
    type: gp2
    storage-class-provisioner: kubernetes.io/aws-ebs

ක්රියාකරුවන් සඳහා අවශ්යතා

CoreOS විසින් ක්‍රියාකරුවන් මත වැඩ කරන අතරතුර ඉංජිනේරුවන් විසින් ලබාගත් ප්‍රධාන රටා සකස් කරන ලදී. සියලුම ක්‍රියාකරුවන් තනි පුද්ගල වුවද (ඔවුන් ඔවුන්ගේම ලක්ෂණ සහ අවශ්‍යතා සහිත නිශ්චිත යෙදුමක් සඳහා නිර්මාණය කර ඇත), ඔවුන්ගේ නිර්මාණය පහත සඳහන් අවශ්‍යතා පනවන ආකාරයේ රාමුවක් මත පදනම් විය යුතුය:

  1. ස්ථාපනය තනි මාර්ගයක් හරහා සිදු කළ යුතුය යෙදවීම: kubectl create -f SOME_OPERATOR_URL/deployment.yaml - සහ අමතර ක්‍රියාමාර්ග අවශ්‍ය නොවේ.
  2. Kubernetes හි ක්රියාකරු ස්ථාපනය කිරීම නව විදේශීය වර්ගයක් නිර්මාණය කළ යුතුය (තෙවන පාර්ශවීය සම්පත්). යෙදුම් අවස්ථා (පොකුරු අවස්ථා) දියත් කිරීමට සහ ඒවා තවදුරටත් කළමනාකරණය කිරීමට (අනුවාද යාවත්කාලීන කිරීම, ප්‍රමාණය වෙනස් කිරීම, ආදිය), පරිශීලකයා මෙම වර්ගය භාවිතා කරනු ඇත.
  3. හැකි සෑම විටම, Kubernetes ගොඩනඟන ලද ප්‍රාථමික භාවිතා කළ යුතුය සේවා и අනුරූ කට්ටලහොඳින් පරීක්ෂා කර තේරුම් ගත හැකි කේතයක් භාවිතා කිරීමට.
  4. ක්‍රියාකරුවන්ගේ පසුගාමී ගැළපුම සහ පරිශීලකයා විසින් සාදන ලද සම්පත්වල පැරණි අනුවාද සඳහා සහාය අවශ්‍ය වේ.
  5. ක්රියාකරු ඉවත් කළ විට, යෙදුමම වෙනස්කම් නොමැතිව දිගටම ක්රියාත්මක විය යුතුය.
  6. පරිශීලකයින්ට අපේක්ෂිත යෙදුම් අනුවාදය තීරණය කිරීමට සහ යෙදුම් අනුවාද යාවත්කාලීන කිරීමට හැකි විය යුතුය. මෘදුකාංග යාවත්කාලීන නොමැතිකම මෙහෙයුම් සහ ආරක්ෂක ගැටළු වල පොදු මූලාශ්‍රයක් වන අතර, ක්‍රියාකරුවන් මෙම කාරණයේදී පරිශීලකයින්ට සහාය විය යුතුය.
  7. ක්‍රියාකරුවන් Chaos Monkey වැනි මෙවලමක් මඟින් පරීක්‍ෂා කළ යුතු අතර, එය කරල්, වින්‍යාස කිරීම් සහ ජාලයේ ඇති විය හැකි අසාර්ථකත්වය හඳුනා ගනී.

etcd ක්රියාකරු

ක්රියාකරු ක්රියාත්මක කිරීමේ උදාහරණය - etcd ක්රියාකරු, සකස් කර ඇත මෙම සංකල්පය නිවේදනය කරන දිනය දක්වා. Etcd පොකුරු වින්‍යාසය ගණපූරණය පවත්වා ගැනීමේ අවශ්‍යතාවය, පොකුරු සාමාජිකත්වය නැවත සැකසීමේ අවශ්‍යතාවය, උපස්ථ සෑදීම සහ යනාදිය හේතුවෙන් සංකීර්ණ විය හැක. උදාහරණයක් ලෙස, etcd පොකුරක් අතින් පරිමාණය කිරීම යනු නව පොකුරු සාමාජිකයෙකු සඳහා DNS නමක් නිර්මාණය කිරීම, නව etcd ආයතනයක් ආරම්භ කිරීම, නව සාමාජිකයා පිළිබඳව පොකුරට දැනුම් දීම (etcdctl සාමාජික එකතු කරන්න) ක්රියාකරු සම්බන්ධයෙන්, පරිශීලකයා පොකුරේ ප්රමාණය වෙනස් කිරීමට ප්රමාණවත් වනු ඇත - අනෙක් සියල්ල ස්වයංක්රීයව සිදුවනු ඇත.

සහ etcd ද CoreOS හි නිර්මාණය කර ඇති බැවින්, එහි ක්‍රියාකරුගේ පෙනුම පළමුව දැකීම තරමක් තාර්කික විය. ඔහු වැඩ කරන්නේ කෙසේද? etcd Operator Logic සංරචක තුනකින් අර්ථ දක්වා ඇත:

  1. නිරීක්ෂණ. ක්‍රියාකරු Kubernetes API භාවිතයෙන් පොකුරේ තත්ත්වය නිරීක්ෂණය කරයි.
  2. විශ්ලේෂණය (විශ්ලේෂණය). වත්මන් තත්ත්වය සහ අපේක්ෂිත එක අතර වෙනස්කම් සොයා ගනී (පරිශීලක වින්‍යාසය මගින් අර්ථ දක්වා ඇත).
  3. ක්රියාව (පනත). etcd සහ/හෝ Kubernetes සේවා API භාවිතයෙන් අනාවරණය වූ වෙනස්කම් ඉවත් කරයි.

Kubernetes සඳහා ක්‍රියාකරුවන්: ප්‍රකාශිත යෙදුම් ධාවනය කරන්නේ කෙසේද

මෙම තර්කනය ක්රියාත්මක කිරීම සඳහා, ක්රියාකරු විසින් කාර්යයන් සකස් කර ඇත සාදන්න/විනාශ කරන්න (පොකුරු සාමාජිකයින් සෑදීම සහ ඉවත් කිරීම etcd) සහ ප්රතිශෝධනය කරන්න (පොකුරු සාමාජිකයන් සංඛ්යාව වෙනස්). Netflix වෙතින් Chaos Monkey ට සමානව නිර්මාණය කරන ලද උපයෝගිතා භාවිතයෙන් එහි ක්‍රියාකාරිත්වයේ නිරවද්‍යතාවය පරීක්ෂා කර ඇත, i.e. etcd කරල් අහඹු ලෙස මරා දැමීම.

etcd හි සම්පූර්ණ ක්‍රියාකාරිත්වය සඳහා, ක්‍රියාකරු අමතර විශේෂාංග සපයයි: උපස්ථ (පරිශීලකයින්ට උපස්ථ සෑදීමට ස්වයංක්‍රීය සහ නොපෙනෙන - වින්‍යාසය තුළ ඒවා කොපමණ වාරයක් කළ යුතුද සහ කොපමණ ප්‍රමාණයක් ගබඩා කළ යුතුද යන්න තීරණය කිරීමට ප්‍රමාණවත් වේ - සහ ඒවායින් පසුව දත්ත ප්‍රතිසාධනය) සහ උත්ශ්රේණි කිරීම (අක්‍රිය කාලයකින් තොරව etcd ස්ථාපනයන් යාවත්කාලීන කිරීම).

ක්රියාකරු සමඟ වැඩ කිරීම පෙනෙන්නේ කෙසේද?

$ kubectl create -f https://coreos.com/operators/etcd/latest/deployment.yaml
$ kubectl create -f https://coreos.com/operators/etcd/latest/example-etcd-cluster.yaml
$ kubectl get pods
NAME                             READY     STATUS    RESTARTS   AGE
etcd-cluster-0000                1/1       Running   0          23s
etcd-cluster-0001                1/1       Running   0          16s
etcd-cluster-0002                1/1       Running   0          8s
etcd-cluster-backup-tool-rhygq   1/1       Running   0          18s

etcd Operator හි වත්මන් තත්ත්වය Kubernetes 1.5.3+ සහ etcd 3.0+ ධාවනය කිරීමට අවශ්‍ය බීටා අනුවාදයකි. මූලාශ්‍ර කේතය සහ ලියකියවිලි (භාවිතය සඳහා උපදෙස් ඇතුළුව) ලබා ගත හැක GitHub.

CoreOS වෙතින් තවත් ක්‍රියාත්මක කිරීමේ උදාහරණයක් නිර්මාණය කර ඇත - Prometheus ක්රියාකරු, නමුත් එය තවමත් ඇල්ෆා වල පවතී (සියලු සැලසුම්ගත විශේෂාංග ක්‍රියාත්මක නොවේ).

තත්ත්වය සහ අපේක්ෂාවන්

Kubernetes Operators නිවේදනය කර මාස 5 ක් ගතවී ඇත. නිල CoreOS ගබඩාවේ (etcd සහ Prometheus සඳහා) තවමත් ක්‍රියාත්මක කිරීම් දෙකක් පමණක් පවතී. දෙකම තවමත් ඔවුන්ගේ ස්ථාවර අනුවාදයන් වෙත ළඟා වී නැත, නමුත් ඔවුන් දිනපතාම කැපවී සිටිති.

සංවර්ධකයින් අපේක්ෂා කරන්නේ “පරිශීලකයින් ඔවුන්ගේ Kubernetes පොකුරු මත Postgres Operators, Cassandra Operators හෝ Redis Operators ස්ථාපනය කර අද වෙබය සඳහා රාජ්‍ය රහිත යෙදුම්වල අනුරූ යෙදවීම තරම් පහසුවෙන් මෙම යෙදුම්වල පරිමාණය කළ හැකි ආයතන සමඟ වැඩ කරන අනාගතයක්” අපේක්ෂා කරයි. පලමු තෙවන පාර්ශවීය ක්රියාකරුවන් ඇත්තටම පෙන්නන්න පටන් ගත්තා.

2017 පෙබරවාරි මාසයේදී බ්‍රසල්ස් හි පැවති විශාලතම යුරෝපීය නිදහස් මෘදුකාංග සම්මන්ත්‍රණයේදී FOSDEM, CoreOS හි Josh Wood විසින් Operators නිවේදනය කළේය. වාර්තාව (වීඩියෝව සබැඳියෙන් ඇත!) පුළුල් විවෘත මූලාශ්‍ර ප්‍රජාව තුළ මෙම සංකල්පයේ ජනප්‍රියත්වය වර්ධනයට දායක විය යුතුය.

ප්රාදේශීය සභා ලිපිය කෙරෙහි ඔබේ උනන්දුවට ස්තූතියි! අපගේ කේන්ද්‍රය වෙත දායක වන්න, DevOps සහ GNU / Linux පද්ධති පරිපාලනය පිළිබඳ නව ද්‍රව්‍ය සහ වට්ටෝරු අතපසු නොකිරීමට - අපි ඒවා නිතිපතා ප්‍රකාශයට පත් කරන්නෙමු!

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න