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 හි මූලික හැකියාවන් භාවිතා කිරීම සහ පුළුල් කිරීම (ඇතුළු. StatefulSets, වෙනස්කම් සඳහා පහත බලන්න) යෙදුම් කේතයට මෙහෙයුම් දැනුම එක් කිරීමට DevOps හට ඉඩ දෙන්න.
ක්රියාකරුගේ අරමුණ - කුබර්නෙට්ස් පොකුරක් තුළ ඇති රාජ්ය යෙදුමක බොහෝ ආයතන කළමනාකරණය කිරීමට ඔබට ඉඩ සලසන API සමඟ පරිශීලකයාට ලබා දෙන්න පොකුර). ඇත්ත වශයෙන්ම, ක්රියාකරු සැලසුම් කර ඇත්තේ හැකිතාක් පොකුරු තුළ ඇති යෙදුම සමඟ වැඩ සරල කිරීමට, කලින් අතින් විසඳිය යුතු මෙහෙයුම් කාර්යයන් ස්වයංක්රීය කිරීම සඳහා ය.
ක්රියාකරුවන් වැඩ කරන ආකාරය
අනුරූ කට්ටල Kubernetes ඔබට අවශ්ය ධාවන කරල් ගණන නියම කිරීමට ඉඩ සලසයි, සහ පාලකයන් ඔවුන්ගේ සංඛ්යාව පවත්වා ගෙන යන බවට සහතික කරයි (කරල් නිර්මාණය කිරීම සහ මකා දැමීම මගින්). ඒ හා සමානව, ක්රියාකරු ක්රියා කරන්නේ සම්මත Kubernetes සම්පතට සහ පාලකයට මෙහෙයුම් දැනුමක් එකතු කිරීමෙනි, අවශ්ය යෙදුම් ආයතන සංඛ්යාව පවත්වා ගැනීමට අමතර ක්රියා කිරීමට ඔබට ඉඩ සලසයි.
මෙය වෙනස් වන්නේ කෙසේද StatefulSetsදත්ත ගබඩා කිරීම හෝ ස්ථිතික IP වැනි රාජ්ය සම්පත් ලබා දීමට පොකුරට අවශ්ය යෙදුම් සඳහා? එවැනි යෙදුම් සඳහා, ක්රියාකරුවන් භාවිතා කළ හැක StatefulSets (වෙනුවට අනුරූ කට්ටල) පදනමක් ලෙස, පිරිනැමීම අතිරේක ස්වයංක්රීයකරණය: බිඳවැටීම් වලදී අවශ්ය ක්රියා සිදු කිරීම, උපස්ථ සෑදීම, වින්යාසය යාවත්කාලීන කිරීම යනාදිය.
එසේ නම්, එය සියල්ල ක්රියා කරන්නේ කෙසේද? ක්රියාකරු යනු පාලක ඩීමන් ය:
- Kubernetes හි සිදුවීම් API වෙත දායක වේ;
- පද්ධතිය පිළිබඳ දත්ත එයින් ලබා ගනී (එය ගැන අනුරූ කට්ටල, කරල් ආහාරයට ගැනීම, සේවා සහ යනාදි.);
- පිළිබඳ තොරතුරු ලැබේ තෙවන පාර්ශවීය සම්පත් (පහත උදාහරණ බලන්න);
- පෙනුමට/වෙනස්වීමට ප්රතික්රියා කරයි තෙවන පාර්ශවීය සම්පත් (උදාහරණයක් ලෙස, ප්රමාණය වෙනස් කිරීම, අනුවාදය වෙනස් කිරීම සහ යනාදිය);
- පද්ධතියේ තත්වයෙහි වෙනසක් සඳහා ප්රතිචාර දක්වයි (එය ගැන අනුරූ කට්ටල, කරල් ආහාරයට ගැනීම, සේවා සහ යනාදි.);
- වඩාත්ම වැදගත්:
- ඔබට අවශ්ය සියල්ල සෑදීමට Kubernetes API වෙත ප්රවේශ වේ (නැවතත්, ඔබේම අනුරූ කට්ටල, කරල් ආහාරයට ගැනීම, සේවා...),
- යම් මැජික් සිදු කරයි (සරල බව සඳහා, ක්රියාකරු විසින්ම කරල් තුළට ගොස් විධාන අමතන බව ඔබට සිතිය හැකිය, උදාහරණයක් ලෙස, පොකුරට සම්බන්ධ වීමට හෝ අනුවාදය යාවත්කාලීන කිරීමේදී දත්ත ආකෘතිය උත්ශ්රේණි කිරීමට).
ඇත්ත වශයෙන්ම, ඔබට පින්තූරයෙන් පෙනෙන පරිදි, වෙනම යෙදුමක් හුදෙක් 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 විසින් ක්රියාකරුවන් මත වැඩ කරන අතරතුර ඉංජිනේරුවන් විසින් ලබාගත් ප්රධාන රටා සකස් කරන ලදී. සියලුම ක්රියාකරුවන් තනි පුද්ගල වුවද (ඔවුන් ඔවුන්ගේම ලක්ෂණ සහ අවශ්යතා සහිත නිශ්චිත යෙදුමක් සඳහා නිර්මාණය කර ඇත), ඔවුන්ගේ නිර්මාණය පහත සඳහන් අවශ්යතා පනවන ආකාරයේ රාමුවක් මත පදනම් විය යුතුය:
- ස්ථාපනය තනි මාර්ගයක් හරහා සිදු කළ යුතුය යෙදවීම: kubectl create -f SOME_OPERATOR_URL/deployment.yaml - සහ අමතර ක්රියාමාර්ග අවශ්ය නොවේ.
- Kubernetes හි ක්රියාකරු ස්ථාපනය කිරීම නව විදේශීය වර්ගයක් නිර්මාණය කළ යුතුය (තෙවන පාර්ශවීය සම්පත්). යෙදුම් අවස්ථා (පොකුරු අවස්ථා) දියත් කිරීමට සහ ඒවා තවදුරටත් කළමනාකරණය කිරීමට (අනුවාද යාවත්කාලීන කිරීම, ප්රමාණය වෙනස් කිරීම, ආදිය), පරිශීලකයා මෙම වර්ගය භාවිතා කරනු ඇත.
- හැකි සෑම විටම, Kubernetes ගොඩනඟන ලද ප්රාථමික භාවිතා කළ යුතුය සේවා и අනුරූ කට්ටලහොඳින් පරීක්ෂා කර තේරුම් ගත හැකි කේතයක් භාවිතා කිරීමට.
- ක්රියාකරුවන්ගේ පසුගාමී ගැළපුම සහ පරිශීලකයා විසින් සාදන ලද සම්පත්වල පැරණි අනුවාද සඳහා සහාය අවශ්ය වේ.
- ක්රියාකරු ඉවත් කළ විට, යෙදුමම වෙනස්කම් නොමැතිව දිගටම ක්රියාත්මක විය යුතුය.
- පරිශීලකයින්ට අපේක්ෂිත යෙදුම් අනුවාදය තීරණය කිරීමට සහ යෙදුම් අනුවාද යාවත්කාලීන කිරීමට හැකි විය යුතුය. මෘදුකාංග යාවත්කාලීන නොමැතිකම මෙහෙයුම් සහ ආරක්ෂක ගැටළු වල පොදු මූලාශ්රයක් වන අතර, ක්රියාකරුවන් මෙම කාරණයේදී පරිශීලකයින්ට සහාය විය යුතුය.
- ක්රියාකරුවන් Chaos Monkey වැනි මෙවලමක් මඟින් පරීක්ෂා කළ යුතු අතර, එය කරල්, වින්යාස කිරීම් සහ ජාලයේ ඇති විය හැකි අසාර්ථකත්වය හඳුනා ගනී.
etcd ක්රියාකරු
ක්රියාකරු ක්රියාත්මක කිරීමේ උදාහරණය - etcd ක්රියාකරු,
සහ etcd ද CoreOS හි නිර්මාණය කර ඇති බැවින්, එහි ක්රියාකරුගේ පෙනුම පළමුව දැකීම තරමක් තාර්කික විය. ඔහු වැඩ කරන්නේ කෙසේද? etcd Operator Logic සංරචක තුනකින් අර්ථ දක්වා ඇත:
- නිරීක්ෂණ. ක්රියාකරු Kubernetes API භාවිතයෙන් පොකුරේ තත්ත්වය නිරීක්ෂණය කරයි.
- විශ්ලේෂණය (විශ්ලේෂණය). වත්මන් තත්ත්වය සහ අපේක්ෂිත එක අතර වෙනස්කම් සොයා ගනී (පරිශීලක වින්යාසය මගින් අර්ථ දක්වා ඇත).
- ක්රියාව (පනත). etcd සහ/හෝ Kubernetes සේවා API භාවිතයෙන් අනාවරණය වූ වෙනස්කම් ඉවත් කරයි.
මෙම තර්කනය ක්රියාත්මක කිරීම සඳහා, ක්රියාකරු විසින් කාර්යයන් සකස් කර ඇත සාදන්න/විනාශ කරන්න (පොකුරු සාමාජිකයින් සෑදීම සහ ඉවත් කිරීම 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+ ධාවනය කිරීමට අවශ්ය බීටා අනුවාදයකි. මූලාශ්ර කේතය සහ ලියකියවිලි (භාවිතය සඳහා උපදෙස් ඇතුළුව) ලබා ගත හැක
CoreOS වෙතින් තවත් ක්රියාත්මක කිරීමේ උදාහරණයක් නිර්මාණය කර ඇත -
තත්ත්වය සහ අපේක්ෂාවන්
Kubernetes Operators නිවේදනය කර මාස 5 ක් ගතවී ඇත. නිල CoreOS ගබඩාවේ (etcd සහ Prometheus සඳහා) තවමත් ක්රියාත්මක කිරීම් දෙකක් පමණක් පවතී. දෙකම තවමත් ඔවුන්ගේ ස්ථාවර අනුවාදයන් වෙත ළඟා වී නැත, නමුත් ඔවුන් දිනපතාම කැපවී සිටිති.
සංවර්ධකයින් අපේක්ෂා කරන්නේ “පරිශීලකයින් ඔවුන්ගේ Kubernetes පොකුරු මත Postgres Operators, Cassandra Operators හෝ Redis Operators ස්ථාපනය කර අද වෙබය සඳහා රාජ්ය රහිත යෙදුම්වල අනුරූ යෙදවීම තරම් පහසුවෙන් මෙම යෙදුම්වල පරිමාණය කළ හැකි ආයතන සමඟ වැඩ කරන අනාගතයක්” අපේක්ෂා කරයි. පලමු තෙවන පාර්ශවීය ක්රියාකරුවන් ඇත්තටම පෙන්නන්න පටන් ගත්තා.
-
ඉලාස්ටික් සෙවුම් ක්රියාකරු UPMC එන්ටර්ප්රයිසස් වෙතින්; -
PostgreSQL ක්රියාකරු හැපෙන දත්ත වලින් (2017 මාර්තු අවසානයේ නිවේදනය කරන ලදී.); -
Rook ක්රියාකරු Ceph මත පදනම් වූ බෙදා හරින ලද ගබඩා පද්ධතියක කතුවරුන්ගෙන් (Rook ඇල්ෆා තත්ත්වයේ පවතී); -
තොග ක්රියාකරුවන් විවෘත කරන්න SAP CCloud වෙතින්.
2017 පෙබරවාරි මාසයේදී බ්රසල්ස් හි පැවති විශාලතම යුරෝපීය නිදහස් මෘදුකාංග සම්මන්ත්රණයේදී FOSDEM, CoreOS හි Josh Wood විසින් Operators නිවේදනය කළේය.
ප්රාදේශීය සභා ලිපිය කෙරෙහි ඔබේ උනන්දුවට ස්තූතියි! අපගේ කේන්ද්රය වෙත දායක වන්න, DevOps සහ GNU / Linux පද්ධති පරිපාලනය පිළිබඳ නව ද්රව්ය සහ වට්ටෝරු අතපසු නොකිරීමට - අපි ඒවා නිතිපතා ප්රකාශයට පත් කරන්නෙමු!
මූලාශ්රය: www.habr.com