අපගේ Kubernetes ඉක්මන් ආරම්භක මාලාව වෙත සාදරයෙන් පිළිගනිමු. මෙය අපට මාර්ගගතව සහ අපගේ පුහුණුවීම් වලදී ලැබෙන වඩාත් රසවත් ප්රශ්න සහිත සාමාන්ය තීරුවකි. Kubernetes විශේෂඥ පිළිතුරු.
අද විශේෂඥයා ඩැනියෙල් පොලෙන්චික් (
Daniele Polencic ) ඩැනියෙල් උපදේශකයෙකු සහ මෘදුකාංග සංවර්ධකයෙකු ලෙස සේවය කරයිLearn8s .
ඔබගේ ප්රශ්නයට පිළිතුරු මීළඟ ලිපියෙන් ලබා ගැනීමට අවශ්ය නම්,
පෙර ලිපි මඟ හැරුණාද?
විවිධ දත්ත මධ්යස්ථානවල Kubernetes පොකුරු සම්බන්ධ කරන්නේ කෙසේද?
කෙටියෙන්:
Kubefed v2 ළඟදීම , සහ මම ගැන කියවීමට ද නිර්දේශ කරමිනැව්කරු иබහු-පොකුරු කාලසටහන් ව්යාපෘතිය .
බොහෝ විට, යටිතල පහසුකම් විවිධ ප්රදේශ හරහා, විශේෂයෙන් පාලිත පරිසරවල ප්රතිනිර්මාණය කර බෙදා හරිනු ලැබේ.
එක් කලාපයක් නොමැති නම්, බාධා වළක්වා ගැනීම සඳහා ගමනාගමනය වෙනත් ස්ථානයකට හරවා යවනු ලැබේ.
Kubernetes සමඟින්, ඔබට සමාන උපාය මාර්ගයක් භාවිතා කළ හැකි අතර විවිධ කලාප හරහා වැඩ බර බෙදා හැරිය හැක.
ඔබට කණ්ඩායමකට, කලාපයකට, පරිසරයකට, හෝ මෙම මූලද්රව්යවල එකතුවකට පොකුරු එකක් හෝ කිහිපයක් තිබිය හැක.
ඔබේ පොකුරු විවිධ වලාකුළුවල සහ පරිශ්රයෙහි සංග්රහ කළ හැක.
එහෙත් එවන් භූගෝලීය ව්යාප්තිය සඳහා යටිතල පහසුකම් සැලසුම් කරන්නේ කෙසේද?
ඔබට තනි ජාලයක් හරහා වලාකුළු පරිසරයන් කිහිපයක් සඳහා එක් විශාල පොකුරක් නිර්මාණය කිරීමට අවශ්යද?
නැතහොත් කුඩා පොකුරු රාශියක් ඇති අතර ඒවා පාලනය කිරීමට සහ සමමුහුර්ත කිරීමට ක්රමයක් සොයා ගන්නේද?
එක් නායකත්ව පොකුරක්
තනි ජාලයක් හරහා එක් පොකුරක් නිර්මාණය කිරීම එතරම් පහසු නැත.
ඔබට හදිසි අනතුරක් සිදුවී ඇතැයි සිතන්න, පොකුරු කොටස් අතර සම්බන්ධතාවය නැති වී යයි.
ඔබට එක් ප්රධාන සේවාදායකයක් තිබේ නම්, සම්පත් වලින් අඩකට නව විධාන ලබා ගැනීමට නොහැකි වනු ඇත, මන්ද ඔවුන්ට ප්රධානියා සම්බන්ධ කර ගැනීමට නොහැකි වනු ඇත.
ඒ සමඟම ඔබට පැරණි මාර්ගගත වගු ඇත (kube-proxy
නව ඒවා බාගත කළ නොහැක) සහ අමතර කරල් නොමැත (kubelet යාවත්කාල කිරීම් ඉල්ලා සිටිය නොහැක).
තත්වය වඩාත් නරක අතට හැරීම සඳහා, Kubernetes හට නෝඩයක් නොපෙනේ නම්, එය එය අනාථ ලෙස සලකුණු කර නැතිවූ කරල් පවතින නෝඩ් වලට බෙදා හරිනු ලැබේ.
ප්රතිඵලයක් වශයෙන්, ඔබට කරල් මෙන් දෙගුණයක් ඇත.
ඔබ එක් එක් කලාපය සඳහා එක් ප්රධාන සේවාදායකයක් සෑදුවහොත්, etcd දත්ත ගබඩාවේ සම්මුති ඇල්ගොරිතමයේ ගැටළු ඇති වේ. (ආසන්න වශයෙන් සංස්. — ඇත්ත වශයෙන්ම, etcd දත්ත සමුදාය ප්රධාන සේවාදායකයන් මත පිහිටා තිබීම අවශ්ය නොවේ. එය එකම කලාපයේ වෙනම සේවාදායක සමූහයක් මත ධාවනය කළ හැකිය. ඇත්ත, ඒ සමගම පොකුරේ අසාර්ථක වීමේ ලක්ෂ්යයක් ලබා ගැනීම. නමුත් ඉක්මනින්.)
etcd භාවිතා කරයි
එනම්, රාජ්යය etcd වෙත ලිවීමට පෙර බහුතර අවස්ථා සම්මුතියකට පැමිණිය යුතුය.
විවිධ කලාපවල etcd අවස්ථා තුනක දී මෙන් etcd අවස්ථා අතර ප්රමාදය නාටකාකාර ලෙස වැඩි වේ නම්, අගයක් සාකච්ඡා කර තැටියට ලිවීමට බොහෝ කාලයක් ගත වේ.
මෙය Kubernetes පාලකයන් තුළ පිළිබිඹු වේ.
පාලක කළමනාකරුට වෙනස් කිරීම ගැන ඉගෙන ගැනීමට සහ දත්ත සමුදායට ප්රතිචාරය ලිවීමට වැඩි කාලයක් අවශ්ය වේ.
එක් පාලකයක් නොව කිහිපයක් ඇති බැවින්, දාම ප්රතික්රියාවක් සිදු වන අතර සම්පූර්ණ පොකුර ඉතා සෙමින් ක්රියා කිරීමට පටන් ගනී.
etcd ප්රමාදයට සංවේදී වන තරමට
තනි පොකුරක් සඳහා විශාල ජාලයක් සඳහා දැනට හොඳ උදාහරණ නොමැත.
මූලික වශයෙන්, සංවර්ධක ප්රජාව සහ SIG-පොකුරු කණ්ඩායම Kubernetes බහාලුම් වාද්ය වෘන්දය කරන ආකාරයටම පොකුරු සංවිධානය කරන්නේ කෙසේදැයි සොයා බැලීමට උත්සාහ කරයි.
විකල්ප 1: kubefed සමඟ පොකුරු සම්මේලනය
SIG-cluster වෙතින් නිල ප්රතිචාරය -
පළමු වතාවට, අපි kube federation මෙවලම භාවිතයෙන් තනි වස්තුවක් ලෙස පොකුරු එකතුවක් කළමනාකරණය කිරීමට උත්සාහ කළෙමු.
ආරම්භය යහපත් වූ නමුත් අවසානයේ kube සම්මේලනය කිසිදා ජනප්රිය වූයේ නැත. මන්ද එය සියලු සම්පත් සඳහා සහය නොදැක්වූ බැවිනි.
එය ෆෙඩරේටඩ් බෙදාහැරීම් සහ සේවා සඳහා සහය දැක්වූ නමුත්, උදාහරණයක් ලෙස StatefulSets නොවේ.
එසේම, ෆෙඩරේෂන් වින්යාසය විවරණ ආකාරයෙන් සම්ප්රේෂණය කරන ලද අතර එය නම්යශීලී නොවීය.
ෆෙඩරේෂන් එකක එක් එක් පොකුරු සඳහා අනුරූ කොටස් කිරීම හුදෙක් අනුසටහන් භාවිතයෙන් විස්තර කරන්නේ කෙසේදැයි සිතන්න.
එය සම්පූර්ණ අවුල් විය.
SIG-cluster kubefed v1 ට පසුව බොහෝ වැඩ කළ අතර ගැටලුවට වෙනත් කෝණයකින් ප්රවේශ වීමට තීරණය කළේය.
විවරණ වෙනුවට, ඔවුන් පොකුරු මත ස්ථාපනය කර ඇති පාලකයක් මුදා හැරීමට තීරණය කළහ. එය අභිරුචි සම්පත් අර්ථ දැක්වීම් (CRDs) භාවිතයෙන් අභිරුචිකරණය කළ හැකිය.
සම්මේලනයේ කොටසක් වන සෑම සම්පතක් සඳහාම, ඔබට කොටස් තුනකින් යුත් අභිරුචි CRD නිර්වචනයක් ඇත:
- සම්පතක සම්මත නිර්වචනය, උදාහරණයක් ලෙස යෙදවීම;
- කොටස
placement
, සම්මුතිය තුළ සම්පත් බෙදා හරින ආකාරය ඔබ නිර්වචනය කරන තැන; - කොටස
override
, නිශ්චිත සම්පතක් සඳහා ඔබට ස්ථානගත කිරීමෙන් බර සහ පරාමිතීන් අභිබවා යා හැක.
ස්ථානගත කිරීම සහ ප්රතික්ෂේප කිරීම යන කොටස් සමඟ ඒකාබද්ධ බෙදා හැරීමක උදාහරණයක් මෙන්න.
apiVersion: types.federation.k8s.io/v1alpha1
kind: FederatedDeployment
metadata:
name: test-deployment
namespace: test-namespace
spec:
template:
metadata:
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- image: nginx
name: nginx
placement:
clusterNames:
- cluster2
- cluster1
overrides:
- clusterName: cluster2
clusterOverrides:
- path: spec.replicas
value: 5
ඔබට පෙනෙන පරිදි, සැපයුම පොකුරු දෙකක් හරහා බෙදා හරිනු ලැබේ: cluster1
и cluster2
.
පළමු පොකුර අනුපිටපත් තුනක් සපයන අතර දෙවැන්න 5 ලෙස සකසා ඇත.
ඔබට අනුරූ ගණන පිළිබඳ වැඩි පාලනයක් අවශ්ය නම්, kubefed2 අනුරූ බර කළ හැකි නව ReplicaSchedulingPreference වස්තුවක් සපයයි:
apiVersion: scheduling.federation.k8s.io/v1alpha1
kind: ReplicaSchedulingPreference
metadata:
name: test-deployment
namespace: test-ns
spec:
targetKind: FederatedDeployment
totalReplicas: 9
clusters:
A:
weight: 1
B:
weight: 2
CRD ව්යුහය සහ API තවම සුදානම් නැති අතර නිල ව්යාපෘති ගබඩාවේ සක්රිය වැඩ සිදු වෙමින් පවතී.
Kubefed2 ගැන අවධානයෙන් සිටින්න, නමුත් එය නිෂ්පාදනය සඳහා තවමත් සුදුසු නොවන බව මතක තබා ගන්න.
kubefed2 ගැන තව දැනගන්න
විකල්ප 2: Booking.com මාදිලියේ පොකුරු ඒකාබද්ධ කිරීම
Booking.com හි සංවර්ධකයින් kubefed v2 මත වැඩ නොකළ නමුත් ඔවුන් ෂිපර් සමඟ පැමිණියහ - පොකුරු කිහිපයක, කලාප කිහිපයක සහ වලාකුළු කිහිපයක බෙදා හැරීම සඳහා ක්රියාකරුවෙකි.
මෙවලම් දෙකම ඔබට ඔබේ බහු-පොකුරු යෙදවීමේ උපාය මාර්ගය අභිරුචිකරණය කිරීමට ඉඩ සලසයි (පරිශීලනය වන පොකුරු සහ ඒවායේ අනුරූ කීයක් තිබේද යන්න).
නමුත් නැව්කරුගේ ඉලක්කය වන්නේ බෙදා හැරීමේදී දෝෂ ඇතිවීමේ අවදානම අවම කිරීමයි.
Shipper හි, ඔබට පෙර සහ වත්මන් යෙදවීම සහ එන ගමනාගමනයේ පරිමාව අතර අනුරූ බෙදීම විස්තර කරන පියවර මාලාවක් අර්ථ දැක්විය හැක.
ඔබ සම්පතක් පොකුරකට තල්ලු කරන විට, නැව් පාලකය එකතු වී ඇති සියලුම පොකුරු හරහා එම වෙනස ක්රමානුකූලව රෝල් කරයි.
එසේම, Shipper ඉතා සීමිතයි.
උදාහරණයක් ලෙස, එය හෙල්ම් ප්රස්ථාර ආදානය ලෙස පිළිගනී සහ වැනිලා සම්පත් සඳහා සහය නොදක්වයි.
සාමාන්යයෙන් කිව්වොත් Shipper වැඩ කරන්නේ මෙහෙමයි.
සම්මත බෙදාහැරීම වෙනුවට, ඔබ හෙල්ම් ප්රස්ථාරයක් ඇතුළත් යෙදුම් සම්පතක් නිර්මාණය කළ යුතුය:
apiVersion: shipper.booking.com/v1alpha1
kind: Application
metadata:
name: super-server
spec:
revisionHistoryLimit: 3
template:
chart:
name: nginx
repoUrl: https://storage.googleapis.com/shipper-demo
version: 0.0.1
clusterRequirements:
regions:
- name: local
strategy:
steps:
- capacity:
contender: 1
incumbent: 100
name: staging
traffic:
contender: 0
incumbent: 100
- capacity:
contender: 100
incumbent: 0
name: full on
traffic:
contender: 100
incumbent: 0
values:
replicaCount: 3
බහු පොකුරු කළමනාකරණය සඳහා Shipper හොඳ විකල්පයකි, නමුත් Helm සමඟ එහි සමීප සබඳතාවයට බාධා පැමිණේ.
අපි හැමෝම හෙල්ම් එකෙන් මාරු උනොත් මොකද වෙන්නේ
නැව්කරු සහ එහි දර්ශනය පිළිබඳ වැඩිදුර සොයා බලන්න
ඔබට කේතය හාරා බැලීමට අවශ්ය නම්,
විකල්ප 3: "මැජික්" පොකුරු ඒකාබද්ධ කිරීම
Kubefed v2 සහ Shipper පොකුරු සම්මේලනය සමඟ වැඩ කරයි, අභිරුචි සම්පත් නිර්වචනය හරහා පොකුරු වෙත නව සම්පත් සපයයි.
නමුත් ඔබට සියලුම බෙදාහැරීම්, StatefulSets, DaemonSets, ආදිය ඒකාබද්ධ කිරීමට නැවත ලිවීමට අවශ්ය නැතිනම් කුමක් කළ යුතුද?
YAML වෙනස් නොකර දැනට පවතින පොකුරක් සම්මේලනයකට ඇතුළත් කරන්නේ කෙසේද?
නමුත් පොකුර සමඟ අන්තර් ක්රියා කිරීමට සහ අභිරුචි නිර්වචනවල සම්පත් එතීමට නව ක්රමයක් ඉදිරිපත් කරනවා වෙනුවට, බහු-පොකුරු-කාලසටහන් සම්මත Kubernetes ජීවන චක්රය තුළට කාවැදී ඇති අතර කරල් නිර්මාණය කරන සියලුම ඇමතුම් වලට බාධා කරයි.
සාදන ලද සෑම පොඩ් එකක්ම වහාම ව්යාජයක් සමඟ ප්රතිස්ථාපනය වේ.
බහු-පොකුරු කාලසටහන් භාවිතා කරයි
ප්රවේශ වෙනස් කිරීම සඳහා webhooks ඇමතුමට බාධා කර idle dummy Pod එකක් නිර්මාණය කිරීමට.
මුල් පොඩ් වෙනත් සැලසුම් චක්රයක් හරහා ගමන් කරයි, එහිදී සමස්ත සම්මේලනයම ඡන්දය ප්රකාශ කිරීමෙන් පසු ස්ථානගත කිරීමේ තීරණයක් ගනු ලැබේ.
අවසාන වශයෙන්, පොඩ් ඉලක්ක පොකුරට භාර දෙනු ලැබේ.
එහි ප්රතිඵලයක් වශයෙන්, ඔබට කිසිවක් නොකරන අමතර පොඩ් එකක් ඇත, හුදෙක් ඉඩක් ගනී.
වාසිය නම් ඔබට සැපයුම් ඒකාබද්ධ කිරීමට නව සම්පත් ලිවීමට සිදු නොවීමයි.
පොඩ් එකක් සාදන සෑම සම්පතක්ම ස්වයංක්රීයව ඒකාබද්ධ කිරීමට සූදානම් වේ.
මෙය සිත්ගන්නා සුළුය, මන්ද හදිසියේම ඔබට කලාප කිහිපයක් හරහා සැපයුම් බෙදා හැර ඇති අතර ඔබ එය නොදැන සිටියේය. කෙසේ වෙතත්, මෙය තරමක් අවදානම් සහගත ය, මන්ද මෙහි සෑම දෙයක්ම මැජික් මත රඳා පවතී.
නමුත් නැව්කරු බෙදාහැරීමේ බලපෑම අවම කිරීමට උත්සාහ කරන අතර, බහු-පොකුරු කාලසටහන්කරු වඩාත් පොදු කාර්යයන් හසුරුවන අතර සමහර විට කණ්ඩායම් රැකියා සඳහා වඩාත් සුදුසු වේ.
එයට දියුණු ක්රමයෙන් බෙදා හැරීමේ යාන්ත්රණයක් නොමැත.
බහු-පොකුරු කාලසටහන් ගැන වැඩි විස්තර මෙතැනින් සොයා ගත හැක
ඔබට ක්රියාත්මක වන බහු-පොකුරු කාලසටහන් ගැන කියවීමට අවශ්ය නම්, අද්මිරාල්ටි සතුව ඇත
වෙනත් මෙවලම් සහ විසඳුම්
බහු පොකුරු සම්බන්ධ කිරීම සහ කළමනාකරණය කිරීම සංකීර්ණ කාර්යයක් වන අතර විශ්වීය විසඳුමක් නොමැත.
ඔබ මෙම මාතෘකාව තවදුරටත් ගවේෂණය කිරීමට කැමති නම්, මෙන්න සම්පත් කිහිපයක්:
රැන්චර් විසින් සබ්මැරීනර් විවිධ Kubernetes පොකුරු වල උඩැතිරි ජාල සම්බන්ධ කරන මෙවලමකි.- සිල්ලර දාම ඉලක්ක භාවිතා කරයි
යුනිමැට්රික්ස් ස්පින්නකර් සමඟ ඒකාබද්ධ වී බහුවිධ පොකුරු හරහා යෙදවීම සංවිධානය කරයි . - IPV6 සහ භාවිතා කිරීමට උත්සාහ කරන්න
කලාප කිහිපයක තනි ජාලයක් . - උදාහරණයක් ලෙස, ඔබට සේවා දැලක් භාවිතා කළ හැකිය
බහු පොකුරු සම්බන්ධ කිරීම සඳහා ඉස්ටියෝ . - Cilium, බහාලුම් ජාල අතුරුමුහුණත් ප්ලගිනය, පිරිනැමේ
පොකුරු දැල් කාර්යය , ඔබට පොකුරු කිහිපයක් ඒකාබද්ධ කිරීමට ඉඩ සලසයි
අදට එච්චරයි
අවසානය දක්වා කියවීමට ස්තූතියි!
බහු පොකුරු වඩාත් කාර්යක්ෂමව සම්බන්ධ කරන්නේ කෙසේදැයි ඔබ දන්නේ නම්,
අපි ඔබේ ක්රමය සබැඳිවලට එක් කරන්නෙමු.
විශේෂ ස්තුතිය Chris Nesbitt-Smith හට (
මූලාශ්රය: www.habr.com