ඔබ Kubernetes සමඟ වැඩ කරන්නේ නම්, kubectl ඔබ වැඩිපුරම භාවිතා කරන උපයෝගිතා වලින් එකකි. තවද ඔබ යම් මෙවලමක් සමඟ වැඩ කිරීමට බොහෝ කාලයක් ගත කරන සෑම විටම, එය හොඳින් අධ්යයනය කර එය ඵලදායී ලෙස භාවිතා කරන්නේ කෙසේදැයි ඉගෙන ගැනීම වටී.
කණ්ඩායම
කතුවරයාට අනුව, ලිපියේ පරමාර්ථය වන්නේ Kubernetes සමඟ ඔබේ දෛනික වැඩ කටයුතු වඩාත් කාර්යක්ෂමව පමණක් නොව, වඩාත් විනෝදජනක කිරීමයි!
හැඳින්වීම: kubectl යනු කුමක්ද?
ඔබ kubectl වඩාත් ඵලදායී ලෙස භාවිතා කිරීමට ඉගෙන ගැනීමට පෙර, එය කුමක්ද සහ එය ක්රියා කරන ආකාරය පිළිබඳ මූලික අවබෝධයක් ලබා ගත යුතුය.
පරිශීලකයාගේ දෘෂ්ටිකෝණයෙන්, kubectl යනු ඔබට Kubernetes මෙහෙයුම් සිදු කිරීමට ඉඩ සලසන පාලන පැනලයකි.
තාක්ෂණික වශයෙන්, kubectl යනු Kubernetes API සේවාදායකයෙකි.
Kubernetes API යනු HTTP REST API වේ. මෙම API යනු සත්ය Kubernetes පරිශීලක අතුරුමුහුණත වන අතර එමඟින් එය සම්පූර්ණයෙන්ම පාලනය වේ. මෙයින් අදහස් කරන්නේ සෑම Kubernetes මෙහෙයුමක්ම API අන්ත ලක්ෂ්යයක් ලෙස නිරාවරණය වන අතර එම අන්ත ලක්ෂ්යය වෙත HTTP ඉල්ලීමක් සමඟ කළ හැකි බවයි.
එබැවින්, kubectl හි ප්රධාන කාර්යය වන්නේ Kubernetes API වෙත HTTP ඉල්ලීම් කිරීමයි:
Kubernetes සම්පූර්ණයෙන්ම සම්පත්-නැඹුරු පද්ධතියකි. මෙයින් අදහස් කරන්නේ එය සම්පත් වල අභ්යන්තර තත්වය පවත්වා ගෙන යන අතර සියලුම Kubernetes මෙහෙයුම් CRUD මෙහෙයුම් වේ.
මෙම සම්පත් කළමනාකරණය කිරීමෙන් ඔබ Kubernetes සම්පූර්ණයෙන්ම පාලනය කරයි, සහ Kubernetes වත්මන් සම්පත් තත්ත්වය මත පදනම්ව කළ යුතු දේ සොයා ගනී. මෙම හේතුව නිසා, Kubernetes API යොමුව ඔවුන්ගේ ආශ්රිත මෙහෙයුම් සමඟ සම්පත් වර්ග ලැයිස්තුවක් ලෙස සංවිධානය කර ඇත.
අපි උදාහරණයක් බලමු.
ඔබට ReplicaSet සම්පතක් සෑදීමට අවශ්ය යැයි සිතමු. මෙය සිදු කිරීම සඳහා, ඔබ විසින් ගොනුවක ReplicaSet විස්තර කරන්න replicaset.yaml
, ඉන්පසු විධානය ක්රියාත්මක කරන්න:
$ kubectl create -f replicaset.yaml
මෙය ReplicaSet සම්පතක් සාදනු ඇත. නමුත් තිරය පිටුපස සිදුවන්නේ කුමක්ද?
Kubernetes සතුව ReplicaSet නිර්මාණය කිරීමේ මෙහෙයුමක් ඇත. වෙනත් ඕනෑම මෙහෙයුමක් මෙන්, එය API අන්ත ලක්ෂ්යයක් ලෙස නිරාවරණය වේ. මෙම මෙහෙයුම සඳහා නිශ්චිත API අන්ත ලක්ෂ්යය මේ ආකාරයට පෙනේ:
POST /apis/apps/v1/namespaces/{namespace}/replicasets
සියලුම Kubernetes මෙහෙයුම් සඳහා API අන්ත ලක්ෂ්ය මෙහි සොයා ගත හැක
එබැවින්, ඔබ ඉහත විධානය ක්රියාත්මක කරන විට, kubectl ඉහත API අන්ත ලක්ෂ්යයට HTTP POST ඉල්ලීමක් යවයි. ඔබ ගොනුවේ සපයා ඇති ReplicaSet අර්ථ දැක්වීම replicaset.yaml
, ඉල්ලීමේ ශරීරය තුළ යවනු ලැබේ.
Kubernetes පොකුර සමඟ අන්තර්ක්රියා කරන සියලුම විධාන සඳහා kubectl ක්රියා කරන ආකාරය මෙයයි. මෙම සියලු අවස්ථා වලදී, kubectl හුදෙක් සුදුසු Kubernetes API අන්ත ලක්ෂ්ය වෙත HTTP ඉල්ලීම් කරයි.
වැනි උපයෝගීතාවයක් භාවිතයෙන් ඔබට Kubernetes සම්පූර්ණයෙන්ම කළමනාකරණය කළ හැකි බව කරුණාවෙන් සලකන්න curl
Kubernetes API වෙත HTTP ඉල්ලීම් හස්තීයව යැවීමෙන්. Kubectl හුදෙක් Kubernetes API භාවිතා කිරීම පහසු කරයි.
kubectl යනු කුමක්ද සහ එය ක්රියා කරන ආකාරය පිළිබඳ මූලික කරුණු මෙයයි. නමුත් Kubernetes API ගැන සෑම kubectl පරිශීලකයෙකුම දැනගත යුතු තවත් දෙයක් තිබේ. අපි Kubernetes ගේ අභ්යන්තර ලෝකය දෙස ඉක්මනින් බලමු.
කුබර්නෙටස්ගේ අභ්යන්තර ලෝකය
Kubernetes සමන්විත වන්නේ පොකුරු නෝඩ් මත වෙනම ක්රියාවලි ලෙස ක්රියාත්මක වන ස්වාධීන සංරචක සමූහයකිනි. සමහර සංරචක ප්රධාන නෝඩ් මත ක්රියා කරයි, අනෙක් ඒවා කම්කරු නෝඩ් මත ක්රියාත්මක වේ, එක් එක් සංරචක තමන්ගේම නිශ්චිත කාර්යයක් ඉටු කරයි.
ප්රධාන නෝඩ් වල ඇති වැදගත්ම සංරචක මෙන්න:
- ගබඩාව - සම්පත් අර්ථ දැක්වීම් ගබඩා කරයි (
සාමාන්යයෙන් එය etcd වේ ). - API සේවාදායකය - API සපයන අතර ගබඩා කළමනාකරණය කරයි.
- පාලක කළමනාකරු - සම්පත් තත්ත්ව පිරිවිතරයන්ට අනුකූල වන බව සහතික කරයි.
- උපලේඛනකරු - සේවක නෝඩ් මත කරල් උපලේඛනගත කරයි.
සේවක නෝඩ් වල වඩාත් වැදගත් අංගයක් මෙන්න:
- කුබෙලෙට් - වැඩ කරන නෝඩය මත බහාලුම් දියත් කිරීම කළමනාකරණය කරයි.
මෙම සංරචක එකට වැඩ කරන ආකාරය තේරුම් ගැනීමට, අපි උදාහරණයක් දෙස බලමු.
අපි හිතමු ඔබ දැන් සම්පූර්ණ කළා කියලා kubectl create -f replicaset.yaml
, ඉන්පසු kubectl විසින් HTTP POST ඉල්ලීමක් කරන ලදී
පොකුරේ මොකද වෙන්නේ?
- කිරීමෙන් පසු
kubectl create -f replicaset.yaml
API සේවාදායකය ඔබගේ ReplicaSet සම්පත් නිර්වචනය ගබඩාවේ ගබඩා කරයි: - ඊළඟට, ReplicaSet පාලකය පාලක කළමනාකරු තුළ දියත් කරනු ලැබේ, එය ReplicaSet සම්පත් නිර්මාණය කිරීම, වෙනස් කිරීම සහ මකා දැමීම හසුරුවයි:
- ReplicaSet පාලකය එක් එක් ReplicaSet අනුරුව සඳහා පොඩ් නිර්වචනයක් නිර්මාණය කරයි (ReplicaSet අර්ථ දැක්වීමේ ඇති පොඩ් අච්චුවට අනුව) සහ ඒවා ගබඩාවේ ගබඩා කරයි:
- උපලේඛනය දියත් කර ඇත, තවමත් කිසිදු සේවක නෝඩ් එකකට පවරා නොමැති කරල් ලුහුබැඳීම:
- කාලසටහන්කරු විසින් එක් එක් කරල් සඳහා සුදුසු සේවක නෝඩයක් තෝරා ගබඩාවේ ඇති පොඩ් නිර්වචනයට මෙම තොරතුරු එක් කරයි:
- පොඩ් එක පවරන ලද සේවක නෝඩය මත, Kubelet දියත් කරනු ලැබේ, එය මෙම නෝඩයට පවරා ඇති කරල් නිරීක්ෂණය කරයි:
- Kubelet ගබඩාවෙන් පොඩ් නිර්වචනය කියවන අතර නෝඩය මත බහාලුම් දියත් කිරීමට Docker වැනි බහාලුම් ධාවන කාලයකට උපදෙස් දෙයි:
පහත දැක්වෙන්නේ මෙම විස්තරයේ පෙළ අනුවාදයකි.
ReplicaSet නිර්මාණය කිරීමේ අන්ත ලක්ෂ්යය වෙත API ඉල්ලීම API සේවාදායකය විසින් සකසනු ලැබේ. API සේවාදායකය ඉල්ලීම සත්යාපනය කරන අතර ReplicaSet සම්පත් නිර්වචනය ගබඩාවේ ගබඩා කරයි.
මෙම සිදුවීම ReplicaSet පාලකය ආරම්භ කරයි, එය පාලක කළමනාකරුගේ උපක්රියාවලියකි. ReplicaSet පාලකය ගබඩාවේ ඇති ReplicaSet සම්පත් නිර්මාණය කිරීම, යාවත්කාලීන කිරීම සහ මකා දැමීම නිරීක්ෂණය කරන අතර මෙය සිදු වූ විට සිදුවීම් දැනුම්දීමක් ලැබේ.
ReplicaSet පාලකයේ කාර්යය වන්නේ අවශ්ය ReplicaSet පොඩ් සංඛ්යාව පවතින බව සහතික කිරීමයි. අපගේ උදාහරණයේ, තවම කරල් නොමැත, එබැවින් ReplicaSet පාලකය මෙම පොඩ් නිර්වචන නිර්මාණය කරයි (ReplicaSet අර්ථ දැක්වීමේ ඇති පොඩ් අච්චුවට අනුව) ඒවා ගබඩාවේ ගබඩා කරයි.
සේවක නෝඩ් සඳහා තවමත් සැලසුම් කර නොමැති පොඩ් නිර්වචන නිරීක්ෂණය කරන උපලේඛකයක් මඟින් නව කරල් නිර්මාණය ක්රියාරම්භ කරයි. උපලේඛකයා විසින් එක් එක් කරල් සඳහා සුදුසු සේවක නෝඩයක් තෝරාගෙන ගබඩාවේ ඇති පොඩ් නිර්වචන යාවත්කාලීන කරයි.
මේ මොහොත දක්වා, පොකුරේ කොතැනකවත් වැඩ භාර කේතයක් ක්රියාත්මක නොවූ බව සලකන්න. මෙතෙක් කරපු හැම දෙයක්ම - මෙය ප්රධාන නෝඩයේ ගබඩාවේ සම්පත් නිර්මාණය කිරීම සහ යාවත්කාලීන කිරීමයි.
අවසාන සිදුවීම ඔවුන්ගේ සේවක නෝඩ් සඳහා නියමිත කරල් නිරීක්ෂණය කරන කුබෙලෙට්ස් අවුලුවයි. ඔබගේ ReplicaSet කරල් ස්ථාපනය කර ඇති සේවක නෝඩයේ Kubelet විසින් අවශ්ය බහාලුම් රූප බාගත කර ඒවා ක්රියාත්මක කිරීමට Docker වැනි බහාලුම් ධාවන කාලයට උපදෙස් දිය යුතුය.
මෙම අවස්ථාවේදී, ඔබගේ ReplicaSet යෙදුම අවසානයේ ක්රියාත්මක වේ!
Kubernetes API හි කාර්යභාරය
ඔබ පෙර උදාහරණයේ දුටු පරිදි, Kubernetes සංරචක (API සේවාදායකය සහ ගබඩාව හැර) ගබඩාවේ ඇති සම්පත් වල වෙනස්කම් සහ ගබඩාවේ ඇති සම්පත් පිළිබඳ තොරතුරු වෙනස් කිරීම නිරීක්ෂණය කරයි.
ඇත්ත වශයෙන්ම, මෙම සංරචක ගබඩාව සමඟ සෘජුව අන්තර් ක්රියා නොකරයි, නමුත් Kubernetes API හරහා පමණි.
පහත උදාහරණ සලකා බලන්න:
- ReplicaSet පාලකය API අන්ත ලක්ෂ්යය භාවිතා කරයි
අනුරූ කට්ටල ලැයිස්තුව පරාමිතිය සමඟwatch
ReplicaSet සම්පත් වල වෙනස්කම් නිරීක්ෂණය කිරීමට. - ReplicaSet පාලකය API අන්ත ලක්ෂ්යය භාවිතා කරයි
Pod සාදන්න (පොඩ් සාදන්න) කරල් සෑදීමට. - Scheduler API අන්ත ලක්ෂ්යය භාවිත කරයි
පැච් පොඩ් (පොඩ් සංස්කරණය කරන්න) තෝරාගත් සේවක නෝඩය පිළිබඳ තොරතුරු සමඟ පොඩ් යාවත්කාලීන කිරීමට.
ඔබට පෙනෙන පරිදි, මෙය kubectl වෙත පිවිසෙන එකම API වේ. අභ්යන්තර සංරචක සහ බාහිර පරිශීලකයින් සඳහා එකම API භාවිතා කිරීම Kubernetes නිර්මාණයේ මූලික සංකල්පයකි.
දැන් අපට Kubernetes ක්රියා කරන ආකාරය සාරාංශගත කළ හැකිය:
- ගබඩා ගබඩාවල සඳහන් වන්නේ, එනම්, Kubernetes සම්පත්.
- API සේවාදායකය Kubernetes API ආකාරයෙන් ගබඩාවට අතුරු මුහුණතක් සපයයි.
- අනෙකුත් සියලුම Kubernetes සංරචක සහ පරිශීලකයන් API හරහා Kubernetes තත්ත්වය (සම්පත්) කියවා, නිරීක්ෂණය කරයි, සහ හැසිරවීම සිදු කරයි.
මෙම සංකල්ප දැන ගැනීම ඔබට kubectl වඩා හොඳින් අවබෝධ කර ගැනීමට සහ එයින් උපරිම ප්රයෝජන ලබා ගැනීමට උපකාරී වේ.
දැන් අපි kubectl සමඟින් ඔබේ ඵලදායිතාව වැඩි දියුණු කිරීමට උපකාර වන නිශ්චිත ඉඟි සහ උපක්රම කිහිපයක් බලමු.
1. විධාන සම්පූර්ණ කිරීම භාවිතයෙන් ආදානය වේගවත් කරන්න
kubectl සමඟ කාර්ය සාධනය වැඩි දියුණු කිරීම සඳහා වඩාත් ප්රයෝජනවත්, නමුත් බොහෝ විට නොසලකා හරින ලද තාක්ෂණික ක්රමවලින් එකක් වන්නේ විධාන සම්පූර්ණ කිරීමයි.
Tab යතුර භාවිතයෙන් kubectl විධානවල කොටස් ස්වයංක්රීයව සම්පූර්ණ කිරීමට විධාන සම්පූර්ණ කිරීම ඔබට ඉඩ සලසයි. මෙය සම්පත් නම් වැනි සංකීර්ණ දෙයක් ඇතුළුව උප විධාන, විකල්ප සහ තර්ක සඳහා ක්රියා කරයි.
kubectl විධානය සම්පූර්ණ කිරීම ක්රියා කරන ආකාරය බලන්න:
Bash සහ Zsh shells සඳහා විධාන සම්පූර්ණ කිරීම ක්රියා කරයි.
විධානය සම්පූර්ණ කිරීම ක්රියා කරන ආකාරය
Command completion යනු completion script එකක් භාවිතයෙන් ක්රියා කරන shell විශේෂාංගයකි. දිගු ස්ක්රිප්ට් යනු නිශ්චිත විධානයක් සඳහා දිගුවක හැසිරීම නිර්වචනය කරන ෂෙල් ස්ක්රිප්ට් එකකි.
පහත දැක්වෙන විධානයන් භාවිතයෙන් Kubectl ස්වයංක්රීයව Bash සහ Zsh සඳහා දිගු ස්ක්රිප්ට් ජනනය කර ප්රතිදානය කරයි:
$ kubectl completion bash
නැත්නම්:
$ kubectl completion zsh
න්යායාත්මකව, kubectl හට විධාන සම්පූර්ණ කිරීමට හැකි වන පරිදි මෙම විධානවල ප්රතිදානය සුදුසු විධාන කවචයට සම්බන්ධ කිරීම ප්රමාණවත් වේ.
ප්රායෝගිකව, සම්බන්ධතා ක්රමය Bash (Linux සහ MacOS අතර වෙනස්කම් ඇතුළුව) සහ Zsh සඳහා වෙනස් වේ. පහත අපි මෙම සියලු විකල්ප දෙස බලමු.
ලිනක්ස් මත පහර දෙන්න
Bash සම්පූර්ණ කිරීමේ ස්ක්රිප්ටය bash-completion පැකේජය මත රඳා පවතී, එබැවින් ඔබ එය මුලින්ම ස්ථාපනය කළ යුතුය:
$ sudo apt-get install bash-completion
නැත්නම්:
$ yum install bash-completion
පහත දැක්වෙන විධානය භාවිතයෙන් පැකේජය සාර්ථකව ස්ථාපනය කර ඇත්දැයි ඔබට පරීක්ෂා කළ හැකිය:
$ type _init_completion
මෙය shell ශ්රිත කේතය ප්රතිදානය කරන්නේ නම්, bash-completion නිවැරදිව ස්ථාපනය වේ. විධානය "සොයා නොගත්" දෝෂයක් ලබා දෙන්නේ නම්, ඔබ ඔබේ ගොනුවට පහත පේළිය එක් කළ යුතුය ~ / .bashrc
:
$ source /usr/share/bash-completion/bash_completion
ගොනුවට මෙම පේළිය එක් කිරීමට අවශ්යද? ~ / .bashrc
හෝ bash-completion ස්ථාපනය කිරීමට ඔබ භාවිතා කළ පැකේජ කළමනාකරු මත රඳා පවතී. මෙය APT සඳහා අවශ්ය වේ, නමුත් YUM සඳහා නොවේ.
bash-completion ස්ථාපනය කිරීමෙන් පසු, kubectl සම්පූර්ණ කිරීමේ ස්ක්රිප්ට් එක සියලුම shell සැසි වලදී සක්රීය වන පරිදි ඔබ සියල්ල වින්යාසගත කළ යුතුය.
මෙය කළ හැකි එක් ක්රමයක් නම් ගොනුවට පහත පේළිය එක් කිරීමයි ~ / .bashrc
:
source <(kubectl completion bash)
තවත් ක්රමයක් නම් kubectl දිගු පිටපත නාමාවලියට එක් කිරීමයි /etc/bash_completion.d
(එය නොපවතියි නම් එය සාදන්න):
$ kubectl completion bash >/etc/bash_completion.d/kubectl
නාමාවලියෙහි ඇති සියලුම ඇඩෝන ස්ක්රිප්ට් /etc/bash_completion.d
bash-completion තුළ ස්වයංක්රීයව ඇතුළත් වේ.
විකල්ප දෙකම සමානව අදාළ වේ.
කවචය නැවත ආරම්භ කිරීමෙන් පසුව, kubectl විධානය සම්පූර්ණ කිරීම ක්රියා කරයි.
MacOS මත පහර දෙන්න
MacOS හි සැකසුම ටිකක් සංකීර්ණයි. කාරණය වන්නේ පෙරනිමියෙන්, MacOS Bash අනුවාදය 3.2 භාවිතා කරන අතර kubectl ස්වයංක්රීය සම්පුර්ණ කිරීමේ ස්ක්රිප්ටයට අවම වශයෙන් 4.1 ක Bash අනුවාදයක් අවශ්ය වන අතර එය Bash 3.2 හි ක්රියා නොකරයි.
MacOS හි Bash හි යල් පැන ගිය අනුවාදයක් භාවිතා කිරීම හා සම්බන්ධ බලපත්ර ගැටළු තිබේ. Bash අනුවාදය 4 GPLv3 යටතේ බලපත්ර ලබා ඇත, එය Apple විසින් සහාය නොදක්වයි.
MacOS මත kubectl ස්වයං සම්පූර්ණ කිරීම වින්යාස කිරීමට, ඔබ Bash හි වඩාත් මෑත අනුවාදයක් ස්ථාපනය කළ යුතුය. ඔබට යාවත්කාලීන කරන ලද Bash ඔබේ පෙරනිමි කවචය ලෙසද සැකසිය හැක, එය අනාගතයේදී ඔබට ගැටලු රාශියක් ඉතිරි කරයි. එය අපහසු නැත, විස්තර ලිපියේ දක්වා ඇත "
දිගටම කරගෙන යාමට පෙර, ඔබ Bash හි මෑත අනුවාදයක් භාවිතා කරන බවට වග බලා ගන්න (ප්රතිදානය පරීක්ෂා කරන්න bash --version
).
Bash සම්පූර්ණ කිරීමේ පිටපත ව්යාපෘතිය අනුව වෙනස් වේ
ඔබට භාවිතා කරමින් bash-completion ස්ථාපනය කළ හැකිය
$ brew install bash-completion@2
එය @2
bash-completion version 2 යන්නෙන් අදහස් වේ. kubectl autocompletion සඳහා bash-completion v2 අවශ්ය වන අතර bash-completion v2 සඳහා අවම වශයෙන් Bash අනුවාදය 4.1 අවශ්ය වේ.
විධාන ප්රතිදානය brew-install
ගොනුවට එකතු කළ යුතු දේ සඳහන් කරන Caveats කොටස අඩංගු වේ ~/.bash_profile
:
export BASH_COMPLETION_COMPAT_DIR=/usr/local/etc/bash_completion.d
[[ -r "/usr/local/etc/profile.d/bash_completion.sh" ]] && .
"/usr/local/etc/profile.d/bash_completion.sh"
කෙසේ වෙතත්, මෙම පේළි එකතු නොකිරීමට මම නිර්දේශ කරමි ~/.bash_profile
, සහ ඇතුළත ~/.bashrc
. මෙම අවස්ථාවෙහිදී, ස්වයංක්රියව සම්පූර්ණ කිරීම ප්රධාන වශයෙන් පමණක් නොව, ළමා විධාන කවචවලද ලබා ගත හැකිය.
විධාන කවචය නැවත ආරම්භ කිරීමෙන් පසු, ඔබට පහත විධානය භාවිතා කර ස්ථාපනය නිවැරදි දැයි තහවුරු කර ගත හැක:
$ type _init_completion
නිමැවුමේ ෂෙල් ශ්රිතයක් ඔබ දුටුවහොත්, සියල්ල නිවැරදිව වින්යාස කර ඇත.
දැන් අපි සියලු සැසිවලදී kubectl ස්වයංක්රීය සම්පූර්ණ කිරීම සක්රීය කර ඇති බව සහතික කළ යුතුය.
එක් ක්රමයක් නම් පහත පේළිය ඔබට එකතු කිරීමයි ~/.bashrc
:
source <(kubectl completion bash)
දෙවන ක්රමය නම් ෆෝල්ඩරයට ස්වයං සම්පූර්ණ ස්ක්රිප්ට් එකක් එක් කිරීමයි /usr/local/etc/bash_completion.d
:
$ kubectl completion bash
>/usr/local/etc/bash_completion.d/kubectl
මෙම ක්රමය ක්රියාත්මක වන්නේ ඔබ Homebrew භාවිතයෙන් bash-completion ස්ථාපනය කළහොත් පමණි. මෙම අවස්ථාවේදී, bash-completion මෙම නාමාවලියෙන් සියලුම ස්ක්රිප්ට් පූරණය කරයි.
ඔබ ස්ථාපනය කර ඇත්නම් /usr/local/etc/bash_completion.d
ස්ථාපනය අතරතුර. මෙම අවස්ථාවේදී, ඔබ bash-completion ස්ථාපනය කළ වහාම kubectl autocompletion ක්රියා කිරීමට පටන් ගනී.
ප්රතිඵලයක් වශයෙන්, මෙම සියලු විකල්ප සමාන වේ.
Zsh
Zsh සඳහා ස්වයං සම්පුර්ණ කිරීමේ ස්ක්රිප්ට් වලට කිසිදු පරායත්තතාවයක් අවශ්ය නොවේ. ඔබ කළ යුත්තේ ඔබ විධාන කවචය පූරණය කරන විට ඒවා සක්රීය කිරීමයි.
ඔබට රේඛාවක් එකතු කිරීමෙන් මෙය කළ හැකිය ~/.zshrc
ගොනුව:
source <(kubectl completion zsh)
ඔබට දෝෂයක් ලැබෙන්නේ නම් not found: compdef
ඔබේ කවචය නැවත ආරම්භ කිරීමෙන් පසුව, ඔබ විසින් buildin ශ්රිතය සක්රීය කළ යුතුය compdef
. එය ඔබගේ ගොනුවේ ආරම්භයට එකතු කිරීමෙන් ඔබට එය සක්රීය කළ හැක ~/.zshrc
පහත සඳහන් දෑ:
autoload -Uz compinit
compinit
2. සම්පත් පිරිවිතර ඉක්මනින් බලන්න
ඔබ YAML සම්පත් නිර්වචන නිර්මාණය කරන විට, ඔබ එම සම්පත් සඳහා ක්ෂේත්ර සහ ඒවායේ තේරුම දැන සිටිය යුතුය. මෙම තොරතුරු සෙවීමට එක් ස්ථානයක් API යොමුවේ ඇත, එහි සියලු සම්පත් සඳහා සම්පූර්ණ පිරිවිතර අඩංගු වේ.
කෙසේ වෙතත්, ඔබට යමක් සෙවීමට අවශ්ය සෑම අවස්ථාවකම වෙබ් බ්රව්සරයට මාරු වීම අපහසු වේ. එබැවින් kubectl විධානය සපයයි kubectl explain
, එය ඔබගේ පර්යන්තයේ ඇති සියලුම සම්පත් වල පිරිවිතර පෙන්වයි.
විධාන ආකෘතිය පහත පරිදි වේ:
$ kubectl explain resource[.field]...
විධානය ඉල්ලා සිටින සම්පතේ හෝ ක්ෂේත්රයේ පිරිවිතර ප්රතිදානය කරයි. පෙන්වන තොරතුරු API අත්පොතෙහි අඩංගු තොරතුරු වලට සමාන වේ.
පෙරනිමියෙන් kubectl explain
ක්ෂේත්රවල කූඩුවල පළමු මට්ටම පමණක් පෙන්වයි.
එය පෙනෙන්නේ කෙසේදැයි බලන්න
ඔබ විකල්පය එකතු කළහොත් ඔබට සම්පූර්ණ ගස ප්රදර්ශනය කළ හැකිය --recursive
:
$ kubectl explain deployment.spec --recursive
අවශ්ය සම්පත් මොනවාදැයි ඔබ හරියටම නොදන්නේ නම්, ඔබට පහත විධානය සමඟ ඒවා සියල්ලම පෙන්විය හැකිය:
$ kubectl api-resources
මෙම විධානය සම්පත් නාම බහු වචන ආකාරයෙන් පෙන්වයි, උදා. deployments
වෙනුවට deployment
. එය උදාහරණයක් ලෙස කෙටි නම ද පෙන්වයි deploy
, එය ඇති එම සම්පත් සඳහා. මෙම වෙනස්කම් ගැන කරදර නොවන්න. මෙම නාමකරණ විකල්ප සියල්ලම kubectl සඳහා සමාන වේ. එනම්, ඔබට ඒවායින් ඕනෑම එකක් භාවිතා කළ හැකිය kubectl explain
.
පහත දැක්වෙන සියලුම විධානයන් සමාන වේ:
$ kubectl explain deployments.spec
# или
$ kubectl explain deployment.spec
# или
$ kubectl explain deploy.spec
3. අභිරුචි තීරු ප්රතිදාන ආකෘතියක් භාවිතා කරන්න
පෙරනිමි විධාන ප්රතිදාන ආකෘතිය kubectl get
:
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
engine-544b6b6467-22qr6 1/1 Running 0 78d
engine-544b6b6467-lw5t8 1/1 Running 0 78d
engine-544b6b6467-tvgmg 1/1 Running 0 78d
web-ui-6db964458-8pdw4 1/1 Running 0 78d
මෙම ආකෘතිය පහසු වේ, නමුත් එය සීමිත තොරතුරු ප්රමාණයක් අඩංගු වේ. සම්පූර්ණ සම්පත් නිර්වචන ආකෘතිය හා සසඳන විට, මෙහි දිස්වන්නේ ක්ෂේත්ර කිහිපයක් පමණි.
මෙම අවස්ථාවේදී, ඔබට අභිරුචි තීරු ප්රතිදාන ආකෘතියක් භාවිතා කළ හැකිය. කුමන දත්ත ප්රතිදානය කළ යුතුද යන්න තීරණය කිරීමට එය ඔබට ඉඩ සලසයි. ඔබට ඕනෑම සම්පත් ක්ෂේත්රයක් වෙනම තීරුවක් ලෙස පෙන්විය හැක.
අභිරුචි ආකෘතියක් භාවිතා කිරීම විකල්පයන් භාවිතයෙන් තීරණය වේ:
-o custom-columns=<header>:<jsonpath>[,<header>:<jsonpath>]...
ඔබට එක් එක් ප්රතිදාන තීරු යුගලයක් ලෙස අර්ථ දැක්විය හැක <header>:<jsonpath>
කොහෙද <header>
තීරුවේ නම, සහ <jsonpath>
- සම්පත් ක්ෂේත්රයක් නිර්වචනය කරන ප්රකාශනයකි.
අපි සරල උදාහරණයක් බලමු:
$ kubectl get pods -o custom-columns='NAME:metadata.name'
NAME
engine-544b6b6467-22qr6
engine-544b6b6467-lw5t8
engine-544b6b6467-tvgmg
web-ui-6db964458-8pdw4
නිමැවුමේ කරල්වල නම් සහිත එක් තීරුවක් අඩංගු වේ.
විකල්ප ප්රකාශනය ක්ෂේත්රයෙන් පොඩ් නම් තෝරා ගනී metadata.name
. මෙයට හේතුව ළමා නාම ක්ෂේත්රයේ පොඩ්ගේ නම අර්ථ දක්වා ඇති බැවිනි metadata
පොඩ් එකේ සම්පත් විස්තරයේ. වැඩි විස්තර සොයා ගත හැක kubectl explain pod.metadata.name
.
දැන් ඔබට ප්රතිදානයට අමතර තීරුවක් එක් කිරීමට අවශ්ය යැයි සිතමු, උදාහරණයක් ලෙස එක් එක් පොඩ් ක්රියාත්මක වන නෝඩය පෙන්වයි. මෙය සිදු කිරීම සඳහා, ඔබට අභිරුචි තීරු විකල්පයට සුදුසු තීරු පිරිවිතර එක් කළ හැකිය:
$ kubectl get pods
-o custom-columns='NAME:metadata.name,NODE:spec.nodeName'
NAME NODE
engine-544b6b6467-22qr6 ip-10-0-80-67.ec2.internal
engine-544b6b6467-lw5t8 ip-10-0-36-80.ec2.internal
engine-544b6b6467-tvgmg ip-10-0-118-34.ec2.internal
web-ui-6db964458-8pdw4 ip-10-0-118-34.ec2.internal
ප්රකාශනය මඟින් නෝඩ් නම තෝරා ගනී spec.nodeName
- නෝඩයකට පොඩ් එකක් පවරා ඇති විට, එහි නම ක්ෂේත්රයේ ලියා ඇත spec.nodeName
පොඩ් සම්පත් පිරිවිතර. වඩාත් සවිස්තරාත්මක තොරතුරු නිමැවුමෙන් සොයාගත හැකිය kubectl explain pod.spec.nodeName
.
Kubernetes සම්පත් ක්ෂේත්ර සිද්ධි සංවේදී බව කරුණාවෙන් සලකන්න.
ඔබට ඕනෑම සම්පත් ක්ෂේත්රයක් තීරුවක් ලෙස බැලිය හැක. සම්පත් පිරිවිතර සමාලෝචනය කර ඔබ කැමති ඕනෑම ක්ෂේත්රයක් සමඟ එය උත්සාහ කරන්න.
නමුත් පළමුව, ක්ෂේත්ර තේරීමේ ප්රකාශන දෙස සමීපව බලමු.
JSONPath ප්රකාශන
සම්පත් ක්ෂේත්ර තෝරාගැනීම සඳහා ප්රකාශන පදනම් වේ
JSONPath යනු JSON ලේඛනවලින් දත්ත ලබා ගැනීම සඳහා භාෂාවකි. තනි ක්ෂේත්රයක් තේරීම JSONPath සඳහා සරලම භාවිත අවස්ථාවයි. ඔහුට බොහෝ දේ ඇත
Kubectl පැහැදිලි කිරීම සීමිත JSONPath විශේෂාංග ගණනකට සහය දක්වයි. ඒවායේ භාවිතයේ හැකියාවන් සහ උදාහරණ පහත විස්තර කෙරේ:
# Выбрать все элементы списка
$ kubectl get pods -o custom-columns='DATA:spec.containers[*].image'
# Выбрать специфический элемент списка
$ kubectl get pods -o custom-columns='DATA:spec.containers[0].image'
# Выбрать элементы списка, попадающие под фильтр
$ kubectl get pods -o custom-columns='DATA:spec.containers[?(@.image!="nginx")].image'
# Выбрать все поля по указанному пути, независимо от их имени
$ kubectl get pods -o custom-columns='DATA:metadata.*'
# Выбрать все поля с указанным именем, вне зависимости от их расположения
$ kubectl get pods -o custom-columns='DATA:..image'
[] ක්රියාකරු විශේෂයෙන් වැදගත් වේ. බොහෝ Kubernetes සම්පත් ක්ෂේත්ර ලැයිස්තු වන අතර, මෙම ක්රියාකරු ඔබට එම ලැයිස්තු වල සාමාජිකයින් තෝරා ගැනීමට ඉඩ සලසයි. ලැයිස්තුවක සියලුම අංග තේරීමට එය බොහෝ විට [*] වැනි වයිල්ඩ්කාඩ් සමඟ භාවිතා වේ.
යෙදුම් උදාහරණ
අභිරුචි තීරු ප්රතිදාන ආකෘතියක් භාවිතා කිරීමේ හැකියාව නිමක් නැත, ඔබට ප්රතිදානය තුළ ඕනෑම ක්ෂේත්රයක් හෝ සම්පත් ක්ෂේත්රවල සංකලනයක් පෙන්විය හැක. මෙන්න නියැදි යෙදුම් කිහිපයක්, නමුත් ඒවා ඔබම ගවේෂණය කර ඔබට වැඩ කරන යෙදුම් සොයා ගැනීමට නිදහස් වන්න.
- කරල් සඳහා බහාලුම් රූප ප්රදර්ශනය කිරීම:
$ kubectl get pods -o custom-columns='NAME:metadata.name,IMAGES:spec.containers[*].image' NAME IMAGES engine-544b6b6467-22qr6 rabbitmq:3.7.8-management,nginx engine-544b6b6467-lw5t8 rabbitmq:3.7.8-management,nginx engine-544b6b6467-tvgmg rabbitmq:3.7.8-management,nginx web-ui-6db964458-8pdw4 wordpress
මෙම විධානය මඟින් එක් එක් පොඩ් සඳහා බහාලුම් රූප නාම පෙන්වයි.
පෝඩ් එකක බහාලුම් කිහිපයක් අඩංගු විය හැකි බව මතක තබා ගන්න, එවිට රූප නාම කොමාවෙන් වෙන් කර එක් පේළියක පෙන්වනු ඇත.
- නෝඩ් ලබා ගත හැකි කලාප පෙන්වමින්:
$ kubectl get nodes -o custom-columns='NAME:metadata.name,ZONE:metadata.labels.failure-domain.beta.kubernetes.io/zone' NAME ZONE ip-10-0-118-34.ec2.internal us-east-1b ip-10-0-36-80.ec2.internal us-east-1a ip-10-0-80-67.ec2.internal us-east-1b
ඔබේ පොකුර පොදු වලාකුළක සත්කාරකත්වය දරන්නේ නම් මෙම විධානය ප්රයෝජනවත් වේ. එය එක් එක් නෝඩය සඳහා පවතින කලාපය පෙන්වයි.
පවතින කලාපය යනු භූගෝලීය කලාපයකට අනුවර්තන කලාපය සීමා කරන වලාකුළු සංකල්පයකි.
එක් එක් නෝඩය සඳහා ලබා ගත හැකි කලාප විශේෂ ලේබලයක් හරහා ලබා ගනී -
. පොකුර පොදු වලාකුළක ක්රියාත්මක වන්නේ නම්, මෙම ලේබලය ස්වයංක්රීයව සාදනු ලබන අතර එක් එක් නෝඩය සඳහා පවතින කලාපවල නම් වලින් පුරවනු ලැබේ.failure-domain.beta.kubernetes.io/zone
ලේබල Kubernetes සම්පත් පිරිවිතරයේ කොටසක් නොවේ, එබැවින් ඔබට ඒවා පිළිබඳ තොරතුරු සොයාගත නොහැක
API මාර්ගෝපදේශය . කෙසේ වෙතත්, ඔබ YAML හෝ JSON ආකෘතියෙන් නෝඩ් පිළිබඳ තොරතුරු ඉල්ලා සිටින්නේ නම් (වෙනත් ඕනෑම ලේබලයක් මෙන්) ඒවා දැකිය හැකිය:$ kubectl get nodes -o yaml # или $ kubectl get nodes -o json
මෙය සම්පත් පිරිවිතර ඉගෙනීමට අමතරව සම්පත් පිළිබඳ වැඩිදුර ඉගෙන ගැනීමට හොඳ ක්රමයකි.
4. පොකුරු සහ නාම අවකාශයන් අතර පහසුවෙන් මාරු වන්න
kubectl Kubernetes API වෙත ඉල්ලීමක් කරන විට, සම්බන්ධතාවය සඳහා අවශ්ය සියලු පරාමිති ලබා ගැනීමට එය මුලින්ම kubeconfig ගොනුව කියවයි.
පෙරනිමියෙන් kubeconfig ගොනුව වේ ~/.kube/config
. සාමාන්යයෙන් මෙම ගොනුව විශේෂ විධානයක් මගින් නිර්මාණය කර හෝ යාවත්කාලීන කරනු ලැබේ.
ඔබ බහුවිධ පොකුරු සමඟ වැඩ කරන විට, ඔබේ kubeconfig ගොනුවේ එම සියලුම පොකුරු වෙත සම්බන්ධ වීමට සැකසුම් අඩංගු වේ. ඔබ වැඩ කරන්නේ කුමන පොකුරු සමඟද යන්න kubectl විධානයට පැවසීමට ඔබට ක්රමයක් අවශ්ය වේ.
පොකුරක් තුළ, ඔබට බහු නාම අවකාශ සෑදිය හැක - භෞතික පොකුරක් තුළ අථත්ය පොකුරු වර්ගයකි. Kubectl kubeconfig ගොනුව මත පදනම්ව භාවිතා කළ යුතු නාම අවකාශයද තීරණය කරයි. මෙයින් අදහස් කරන්නේ ඔබට kubectl විධානය සමඟ වැඩ කළ යුතු නාම අවකාශය පැවසීමට ක්රමයක් අවශ්ය බවයි.
එය ක්රියාත්මක වන ආකාරය සහ එය ඵලදායී ලෙස ක්රියාත්මක කරන්නේ කෙසේද යන්න මෙම පරිච්ඡේදයෙන් අපි විස්තර කරමු.
ඔබට KUBECONFIG පරිසර විචල්යයේ ලැයිස්තුගත කර ඇති බහු kubeconfig ගොනු තිබිය හැකි බව සලකන්න. මෙම අවස්ථාවෙහිදී, මෙම සියලුම ගොනු ධාවන වේලාවේදී එක් පොදු වින්යාසයකට ඒකාබද්ධ වේ. පරාමිතිය සමඟ kubectl ධාවනය කිරීමෙන් ඔබට පෙරනිමි kubeconfig ගොනුව වෙනස් කළ හැකිය --kubeconfig
. බලන්න
kubeconfig ගොනු
kubeconfig ගොනුවේ හරියටම අඩංගු වන්නේ කුමක්දැයි බලමු:
ඔබට පෙනෙන පරිදි, kubeconfig ගොනුවේ සන්දර්භ මාලාවක් අඩංගු වේ. සන්දර්භය මූලද්රව්ය තුනකින් සමන්විත වේ:
- Cluster — පොකුරු සේවාදායකයේ API URL.
- පරිශීලක - පොකුරේ පරිශීලක සත්යාපන අක්තපත්ර.
- නාම අවකාශය - පොකුරට සම්බන්ධ වන විට භාවිතා කරන නාම අවකාශය.
ප්රායෝගිකව, ඔවුන් බොහෝ විට ඔවුන්ගේ kubeconfig හි පොකුරු එකකට එක් සන්දර්භයක් භාවිතා කරයි. කෙසේ වෙතත්, ඔබට එක් පොකුරකට බහු සන්දර්භ තිබිය හැක, පරිශීලක හෝ නාම අවකාශය අනුව වෙනස් වේ. කෙසේ වෙතත්, මෙම බහු-සන්දර්භය වින්යාසය සාමාන්ය දෙයක් නොවේ, එබැවින් සාමාන්යයෙන් පොකුරු සහ සන්දර්භ අතර එකින් එක සිතියම්ගත කිරීමක් ඇත.
ඕනෑම අවස්ථාවක, එක් සන්දර්භයක් වත්මන් වේ:
kubectl වින්යාස ගොනුවක් කියවන විට, එය සෑම විටම වත්මන් සන්දර්භය වෙතින් තොරතුරු ලබා ගනී. ඉහත උදාහරණයේ, kubectl Hare පොකුරට සම්බන්ධ වනු ඇත.
ඒ අනුව, වෙනත් පොකුරකට මාරු වීමට, ඔබ kubeconfig ගොනුවේ වත්මන් සන්දර්භය වෙනස් කළ යුතුය:
දැන් kubectl ෆොක්ස් පොකුරට සම්බන්ධ වනු ඇත.
එකම පොකුරේ වෙනත් නාම අවකාශයකට මාරු වීමට, ඔබ වත්මන් සන්දර්භය සඳහා නාම අවකාශයේ මූලද්රව්යයේ අගය වෙනස් කළ යුතුය:
ඉහත උදාහරණයේදී, kubectl Fox cluster's Prod namespace භාවිතා කරනු ඇත (පෙර ටෙස්ට් නාම අවකාශය සකසා ඇත).
kubectl විකල්ප ද සපයන බව සලකන්න --cluster
, --user
, --namespace
и --context
, kubeconfig හි සකසා ඇති දේ නොසලකා, තනි මූලද්රව්ය සහ වත්මන් සන්දර්භයම උඩින් ලිවීමට ඔබට ඉඩ සලසයි. බලන්න kubectl options
.
න්යායාත්මකව, ඔබට kubeconfig හි සැකසුම් අතින් වෙනස් කළ හැකිය. නමුත් එය අපහසුයි. මෙම මෙහෙයුම් සරල කිරීම සඳහා, ඔබට ස්වයංක්රීයව පරාමිතීන් වෙනස් කිරීමට ඉඩ සලසන විවිධ උපයෝගිතා තිබේ.
kubectx භාවිතා කරන්න
පොකුරු සහ නාම අවකාශයන් අතර මාරුවීම සඳහා ඉතා ජනප්රිය උපයෝගීතාවයකි.
උපයෝගීතාව විධාන සපයයි kubectx
и kubens
වත්මන් සන්දර්භය සහ නාම අවකාශය පිළිවෙලින් වෙනස් කිරීමට.
සඳහන් කර ඇති පරිදි, වත්මන් සන්දර්භය වෙනස් කිරීම යනු ඔබට පොකුරු එකකට ඇත්තේ එක් සන්දර්භය පමණක් නම්, පොකුරු වෙනස් කිරීමයි.
මෙන්න මෙම විධාන ක්රියාත්මක කිරීමේ උදාහරණයක්:
අත්යවශ්යයෙන්ම, මෙම විධානයන් ඉහත විස්තර කර ඇති පරිදි kubeconfig ගොනුව සංස්කරණය කරයි.
ස්ථාපනය සඳහා kubectx
, මත උපදෙස් අනුගමනය කරන්න
විධාන දෙකම සන්දර්භය සහ නාම අවකාශයේ නම් ස්වයංක්රීයව සම්පූර්ණ කිරීමට සහය දක්වයි, එමඟින් ඒවා සම්පූර්ණයෙන්ම ටයිප් කිරීමේ අවශ්යතාවය ඉවත් කරයි. ස්වයං සම්පූර්ණ කිරීම සැකසීම සඳහා උපදෙස්
තවත් ප්රයෝජනවත් අංගයක් kubectx
එය kubectx
. අන්තර්ක්රියාකාරීව, fzf මගින් සපයන අන්තර්ක්රියාකාරී නිදහස් සෙවුම් අතුරුමුහුණත හරහා ඔබට සන්දර්භය සහ නාම අවකාශය තෝරාගත හැක.
ෂෙල් අන්වර්ථ භාවිතා කිරීම
වත්මන් සන්දර්භය සහ නාම අවකාශය වෙනස් කිරීමට ඔබට වෙනම මෙවලම් අවශ්ය නොවේ, මන්ද kubectl මේ සඳහා විධාන ද සපයයි. ඔව්, කණ්ඩායම kubectl config
kubeconfig ගොනු සංස්කරණය කිරීම සඳහා උප විධාන සපයයි.
මෙන්න ඒවායින් කිහිපයක්:
kubectl config get-contexts
: සියලුම සන්දර්භ පෙන්වන්න;kubectl config current-context
: වත්මන් සන්දර්භය ලබා ගන්න;kubectl config use-context
: වත්මන් සන්දර්භය වෙනස් කරන්න;kubectl config set-context
: සන්දර්භය මූලද්රව්යය වෙනස් කරන්න.
කෙසේ වෙතත්, මෙම විධානයන් දිගු බැවින් ඒවා කෙලින්ම භාවිතා කිරීම එතරම් පහසු නොවේ. ඔබට ක්රියාත්මක කිරීමට පහසු ඒවා සඳහා ෂෙල් අන්වර්ථ සෑදිය හැකිය.
මම kubectx වලට සමාන ක්රියාකාරීත්වයක් සපයන මෙම විධාන මත පදනම්ව අන්වර්ථ කට්ටලයක් නිර්මාණය කළෙමි. මෙන්න ඔබට ඒවා ක්රියාවෙන් දැකිය හැකිය:
අන්වර්ථයන් අන්තර්ක්රියාකාරී නිදහස් බැලීමේ අතුරු මුහුණතක් සැපයීමට fzf භාවිතා කරන බව සලකන්න (kubectx හි අන්තර්ක්රියාකාරී මාදිලිය වැනි). මෙයින් අදහස් කරන්නේ ඔබට අවශ්ය බවයි
අන්වර්ථ නාමවල අර්ථ දැක්වීම් මෙන්න:
# Получить текущий контекст
alias krc='kubectl config current-context'
# Список всех контекстов
alias klc='kubectl config get-contexts -o name | sed "s/^/ /;|^ $(krc)$|s/ /*/"'
# Изменить текущий контекст
alias kcc='kubectl config use-context "$(klc | fzf -e | sed "s/^..//")"'
# Получить текущее пространство имен
alias krn='kubectl config get-contexts --no-headers "$(krc)" | awk "{print $5}" | sed "s/^$/default/"'
# Список всех пространств имен
alias kln='kubectl get -o name ns | sed "s|^.*/| |;|^ $(krn)$|s/ /*/"'
# Изменить текущее пространство имен
alias kcn='kubectl config set-context --current --namespace "$(kln | fzf -e | sed "s/^..//")"'
මෙම අන්වර්ථ සැකසීමට ඔබ ඉහත නිර්වචන ඔබගේ ගොනුවට එක් කළ යුතුය ~/.bashrc
හෝ ~/.zshrc
සහ ඔබේ කවචය නැවත ආරම්භ කරන්න.
ප්ලගීන භාවිතා කිරීම
මූලික විධාන ලෙසම ක්රියාත්මක වන ප්ලගීන පැටවීමට Kubectl ඔබට ඉඩ සලසයි. උදාහරණයක් ලෙස, ඔබට kubectl-foo ප්ලගිනය ස්ථාපනය කර විධානය ක්රියාත්මක කිරීමෙන් එය ක්රියාත්මක කළ හැකිය. kubectl foo
.
මේ ආකාරයෙන් සන්දර්භය සහ නාම අවකාශය වෙනස් කිරීම පහසු වනු ඇත, උදාහරණයක් ලෙස ධාවනය කිරීම kubectl ctx
සන්දර්භය වෙනස් කිරීමට සහ kubectl ns
නාම අවකාශය වෙනස් කිරීමට.
මම මෙය කරන ප්ලගීන දෙකක් ලියා ඇත:
ප්ලගීන වල කාර්යය පෙර කොටසේ අන්වර්ථ නාමයන් මත පදනම් වේ.
මෙන්න ඔවුන් වැඩ කරන ආකාරය:
අන්තර්ක්රියාකාරී නිදහස් සෙවුම් අතුරුමුහුණතක් සැපයීමට ප්ලගීන fzf භාවිතා කරන බව සලකන්න (kubectx හි අන්තර්ක්රියාකාරී මාදිලිය වැනි). මෙයින් අදහස් කරන්නේ ඔබට අවශ්ය බවයි
ප්ලගින ස්ථාපනය කිරීමට, ඔබ නම් කර ඇති shell scripts බාගත කළ යුතුය chmod +x
. මෙයින් පසු වහාම ඔබට භාවිතා කිරීමට හැකි වනු ඇත kubectl ctx
и kubectl ns
.
5. autoaliases සමඟ ආදානය අඩු කරන්න
ෂෙල් අන්වර්ථය ආදානය වේගවත් කිරීමට හොඳ ක්රමයකි. ව්යාපෘතිය
ඔබ කල්පනා කරනවා ඇති - ඔබට අන්වර්ථ නාම 800ක් මතක තබා ගන්නේ කෙසේද? නමුත් ඔබට ඒවා සියල්ල මතක තබා ගැනීමට අවශ්ය නැත, මන්ද ඒවා සරල යෝජනා ක්රමයකට අනුව ඉදිකර ඇති අතර එය පහත දක්වා ඇත:
උදාහරණ වශයෙන්:
- kgpooyaml - kubectl ලබා ගන්න Poods oyaml
- ksysgsvcw — kubectl -n kube-system get svc w
- ksysrmcm -kubectl -n kube-පද්ධතිය rm සෙ.මී
- kgdepallsl - kubectl සියලු sl deployment ලබා ගන්න
ඔබට පෙනෙන පරිදි, අන්වර්ථයන් සෑදී ඇත්තේ සංරචක වලින් වන අතර, ඒ සෑම එකක්ම kubectl විධානයේ නිශ්චිත අංගයක් නියෝජනය කරයි. සෑම අන්වර්ථ නාමයකටම මූලික විධානය, ක්රියාකාරිත්වය සහ සම්පත් සඳහා එක් සංරචකයක් සහ පරාමිති සඳහා බහු සංරචක තිබිය හැක. ඔබ ඉහත රූප සටහනට අනුව මෙම සංරචක වමේ සිට දකුණට සරලව "ජනගත" කරන්න.
වත්මන් සවිස්තරාත්මක රූප සටහන මෙහි ඇත
උදාහරණයක් ලෙස, kgpooyamlall යන අන්වර්ථය විධානයට සමාන වේ kubectl get pods -o yaml --all-namespaces
.
විකල්පවල සාපේක්ෂ අනුපිළිවෙල වැදගත් නොවේ: විධානය kgpooyamlall
විධානයට සමාන වේ kgpoalloyaml
.
ඔබට සියලුම සංරචක අන්වර්ථ ලෙස භාවිතා කිරීමට අවශ්ය නැත. උදාහරණ වශයෙන් k
, kg
, klo
, ksys
, kgpo
ද භාවිතා කළ හැකිය. එපමණක් නොව, ඔබට විධාන රේඛාවේ අන්වර්ථ සහ සාමාන්ය විධාන හෝ විකල්ප ඒකාබද්ධ කළ හැකිය:
උදාහරණ වශයෙන්:
- වෙනුවට
kubectl proxy
ඔබට ලිවිය හැකk proxy
. - වෙනුවට
kubectl get roles
ඔබට ලිවිය හැකkg roles
(භූමකාමී සම්පත් සඳහා දැනට අන්වර්ථයක් නොමැත). - විශේෂිත පොඩ් එකක් සඳහා දත්ත ලබා ගැනීමට, ඔබට විධානය භාවිතා කළ හැකිය
kgpo my-pod — kubectl get pod my-pod
.
සමහර අන්වර්ථවලට විධාන රේඛා තර්කයක් අවශ්ය බව කරුණාවෙන් සලකන්න. උදාහරණයක් ලෙස, අන්වර්ථය kgpol
අදහස් කරයි kubectl get pods -l
. විකල්පය -l
තර්කයක් අවශ්ය වේ - ලේබල පිරිවිතරයක්. ඔබ අන්වර්ථ නාමයක් භාවිතා කරන්නේ නම් එය පෙනෙනු ඇත kgpol app=ui
.
සමහර අන්වර්ථවලට තර්ක අවශ්ය වන බැවින්, a, f සහ l යන අන්වර්ථයන් අවසන් වරට භාවිතා කළ යුතුය.
සාමාන්යයෙන්, ඔබ මෙම යෝජනා ක්රමය ක්රියාත්මක කළ පසු, ඔබට ක්රියාත්මක කිරීමට අවශ්ය විධාන වලින් අන්වර්ථ නාමයන් ලබා ගත හැකි අතර බොහෝ ටයිප් කිරීමේ කාලය ඉතිරි කර ගත හැකිය.
ස්ථාපනය
kubectl-aliases ස්ථාපනය කිරීමට, ඔබ ගොනුව බාගත කළ යුතුය ~/.bashrc
හෝ ~/.zshrc
:
source ~/.kubectl_aliases
ස්වයං සම්පූර්ණ කිරීම
අප කලින් කී පරිදි, ඔබ බොහෝ විට විධාන රේඛාවේ අන්වර්ථයකට අමතර වචන එකතු කරයි. උදාහරණ වශයෙන්:
$ kgpooyaml test-pod-d4b77b989
ඔබ kubectl විධාන සම්පූර්ණ කිරීම භාවිතා කරන්නේ නම්, ඔබ බොහෝ විට සම්පත් නාම වැනි දේ සඳහා ස්වයං සම්පූර්ණ කිරීම භාවිතා කර ඇත. නමුත් අන්වර්ථ නාමයන් භාවිතා කරන විට මෙය කළ හැකිද?
මෙය ඉතා වැදගත් ප්රශ්නයක් වන්නේ ස්වයංක්රීය සම්පූර්ණ කිරීම ක්රියා නොකරන්නේ නම්, අන්වර්ථ නාමවල ප්රතිලාභ ඔබට අහිමි වනු ඇත.
පිළිතුර රඳා පවතින්නේ ඔබ භාවිතා කරන කවරය මත ය:
- Zsh සඳහා, අන්වර්ථ සම්පූර්ණ කිරීම කොටුවෙන් පිටත ක්රියා කරයි.
- Bash සඳහා, අවාසනාවකට මෙන්, වැඩ කිරීමට ස්වයංක්රීයව සම්පූර්ණ කිරීම සඳහා යම් වැඩක් අවශ්ය වේ.
Bash හි අන්වර්ථ සඳහා ස්වයං සම්පූර්ණ කිරීම සක්රීය කිරීම
Bash හි ඇති ගැටළුව නම්, එය අන්වර්ථය සම්පූර්ණ කිරීමට උත්සාහ කිරීම (ඔබ Tab එබූ සෑම අවස්ථාවකදීම) අන්වර්ථය සඳහන් කරන විධානය නොවේ (උදාහරණයක් ලෙස Zsh කරන පරිදි). ඔබට අන්වර්ථ 800 සඳහා සම්පූර්ණ කිරීමේ ස්ක්රිප්ට් නොමැති බැවින්, ස්වයං සම්පූර්ණ කිරීම ක්රියා නොකරයි.
ව්යාපෘති
පහත දැක්වෙන පරිදි, මම මුලින්ම සම්පූර්ණ අන්වර්ථ ස්ථාපනය කරන්නේ කෙසේද සහ පසුව සියලු kubectl අන්වර්ථ සඳහා සම්පූර්ණ කිරීම සක්රීය කිරීමට එය වින්යාස කරන්නේ කෙසේද යන්න පැහැදිලි කරමි.
සම්පූර්ණ අන්වර්ථය ස්ථාපනය කිරීම
පළමුවෙන්ම, සම්පූර්ණ අන්වර්ථය රඳා පවතී
MacOS භාවිතා කරන්නන් සඳහා වැදගත් සටහන: kubectl ස්වයංක්රීය සම්පුර්ණ කිරීමේ ස්ක්රිප්ටය මෙන්, MacOS හි පෙරනිමිය වන Bash 3.2 සමඟ සම්පුර්ණ අන්වර්ථය ක්රියා නොකරයි. විශේෂයෙන්ම, සම්පූර්ණ අන්වර්ථය bash-completion v2 මත රඳා පවතී (brew install bash-completion@2
), අවම වශයෙන් Bash 4.1 අවශ්ය වේ. මෙයින් අදහස් කරන්නේ MacOS හි සම්පූර්ණ අන්වර්ථය භාවිතා කිරීමට ඔබ Bash හි නව අනුවාදයක් ස්ථාපනය කළ යුතු බවයි.
ඔබ පිටපත බාගත කළ යුතුය ~/.bashrc
:
source ~/bash_completion.sh
කවචය නැවත පණගැන්වීමෙන් පසු, සම්පූර්ණ අන්වර්ථය සම්පූර්ණයෙන්ම ස්ථාපනය වේ.
kubectl අන්වර්ථ සඳහා ස්වයං සම්පූර්ණ කිරීම සක්රීය කිරීම
තාක්ෂණිකව සම්පුර්ණ-අන්වර්ථය දවටන ශ්රිතයක් සපයයි _complete_alias
. මෙම කාර්යය අන්වර්ථය පරීක්ෂා කර අන්වර්ථ විධානය සඳහා සම්පූර්ණ කිරීමේ ඉඟි ලබා දෙයි.
විශේෂිත අන්වර්ථයක් සමඟ ශ්රිතයක් සම්බන්ධ කිරීමට, ඔබ විසින් සාදන ලද Bash යාන්ත්රණය භාවිතා කළ යුතුය _complete_alias
අන්වර්ථ සම්පූර්ණ කිරීමේ කාර්යයක් ලෙස.
උදාහරණයක් ලෙස, අපි kubectl විධානය නියෝජනය කරන අන්වර්ථය k ගනිමු. ස්ථාපනය සඳහා _complete_alias
මෙම අන්වර්ථය සඳහා අනුපූරක කාර්යයක් ලෙස, ඔබ පහත විධානය ක්රියාත්මක කළ යුතුය:
$ complete -F _complete_alias k
මෙහි ප්රතිඵලය වනුයේ ඔබ අන්වර්ථයක් k ස්වයංක්රීයව සම්පුර්ණ කරන විට, ශ්රිතය හැඳින්වීමයි _complete_alias
, එය අන්වර්ථය පරීක්ෂා කර විධානය සඳහා සම්පූර්ණ කිරීමේ ඉඟි ලබා දෙයි kubectl
.
දෙවන උදාහරණයක් ලෙස, අපි අන්වර්ථය ගනිමු kg
, එයින් අදහස් කෙරේ kubectl get
:
$ complete -F _complete_alias kg
පෙර උදාහරණයේ මෙන්, ඔබ කිලෝග්රෑම් ස්වයංක්රීයව සම්පූර්ණ කරන විට, ඔබට ලැබෙන සම්පූර්ණ කිරීමේ ඉඟි ඔබට ලැබේ. kubectl get
.
ඔබේ පද්ධතියේ ඕනෑම අන්වර්ථයක් සඳහා ඔබට සම්පූර්ණ අන්වර්ථයක් භාවිතා කළ හැකි බව සලකන්න.
එබැවින්, සියලුම kubectl අන්වර්ථ සඳහා ස්වයංක්රීය සම්පූර්ණ කිරීම සක්රීය කිරීමට, ඔබ ඒ සෑම එකක් සඳහාම ඉහත විධානය ක්රියාත්මක කළ යුතුය. ඔබ kubectl-අන්වර්ථයන් සකසා ඇත්නම්, පහත කොටස මෙය හරියටම කරයි ~/.kubectl-aliases
:
for _a in $(sed '/^alias /!d;s/^alias //;s/=.*$//' ~/.kubectl_aliases);
do
complete -F _complete_alias "$_a"
done
මෙම කේත කොටස ඔබේ තුළ තැබිය යුතුය ~/.bashrc
, විධාන කවචය නැවත ආරම්භ කරන්න සහ ස්වයං සම්පූර්ණ කිරීම සියලු kubectl අන්වර්ථ 800 සඳහා ලබා ගත හැකි වනු ඇත.
6. ප්ලගින සමඟ kubectl දිගු කිරීම
සිට ආරම්භ වේ
ඔබ හුරුපුරුදු නම්
මෙම පරිච්ඡේදයේ, අපි ප්ලගීන ස්ථාපනය කරන්නේ කෙසේද, ඒවා සොයා ගන්නේ කෙසේද සහ ඔබේම ප්ලගීන සාදා ගන්නේ කෙසේද යන්න ආවරණය කරන්නෙමු.
ප්ලගීන ස්ථාපනය කිරීම
Kubectl ප්ලගින වැනි නම සහිත සරල ක්රියාත්මක කළ හැකි ගොනු ලෙස බෙදා හැරේ kubectl-x
. උපසර්ගය kubectl-
අවශ්ය වේ, පසුව ඔබට ප්ලගිනය ඇමතීමට ඉඩ සලසන නව kubectl උප විධානයක්.
උදාහරණයක් ලෙස, hello ප්ලගිනය නමින් ගොනුවක් ලෙස බෙදා හරිනු ලැබේ kubectl-hello
.
ප්ලගිනය ස්ථාපනය කිරීමට, ඔබ ගොනුව පිටපත් කළ යුතුය kubectl-x
ඔබගේ PATH හි ඕනෑම නාමාවලියකට සහ එය ක්රියාත්මක කළ හැකි බවට පත් කරන්න, උදාහරණයක් ලෙස chmod +x
. මෙයින් පසු වහාම ඔබට ප්ලගිනය ඇමතීමට හැකිය kubectl x
.
ඔබගේ පද්ධතියේ දැනට ස්ථාපනය කර ඇති සියලුම ප්ලගීන ලැයිස්තුගත කිරීමට ඔබට පහත විධානය භාවිතා කළ හැක:
$ kubectl plugin list
ඔබට එකම නම සහිත ප්ලගීන කිහිපයක් තිබේ නම් හෝ ක්රියාත්මක කළ නොහැකි ප්ලගින ගොනුවක් තිබේ නම් මෙම විධානය මඟින් අනතුරු ඇඟවීම් ද පෙන්වනු ඇත.
Krew භාවිතයෙන් ප්ලගීන සොයා ගැනීම සහ ස්ථාපනය කිරීම
Kubectl ප්ලගීන මෘදුකාංග පැකේජ මෙන් බෙදා ගැනීමට හෝ නැවත භාවිතා කිරීමට හැකිය. නමුත් අන් අය බෙදාගත් ප්ලගීන ඔබට සොයාගත හැක්කේ කොතැනින්ද?
Krew යනු ඔබට තෝරාගෙන ස්ථාපනය කළ හැකි kubectl ප්ලගීන ලැයිස්තුවකි. ඒ අතරම, Krew යනු kubectl සඳහා ප්ලගිනයකි.
මෙයින් අදහස් කරන්නේ Krew ස්ථාපනය කිරීම වෙනත් ඕනෑම kubectl ප්ලගිනයක් ස්ථාපනය කරන ආකාරයටම ක්රියා කරන බවයි. ඔබට සවිස්තරාත්මක උපදෙස් සොයාගත හැකිය
වඩාත්ම වැදගත් Krew විධාන වන්නේ:
# Поиск в списке плагинов
$ kubectl krew search [<query>]
# Посмотреть информацию о плагине
$ kubectl krew info <plugin>
# Установить плагин
$ kubectl krew install <plugin>
# Обновить все плагины до последней версии
$ kubectl krew upgrade
# Посмотреть все плагины, установленные через Krew
$ kubectl krew list
# Деинсталлировать плагин
$ kubectl krew remove <plugin>
Krew භාවිතයෙන් ප්ලගීන ස්ථාපනය කිරීම ඉහත විස්තර කර ඇති සම්මත ක්රමය භාවිතයෙන් ප්ලගීන ස්ථාපනය කිරීමට බාධාවක් නොවන බව කරුණාවෙන් සලකන්න.
විධානය බව කරුණාවෙන් සලකන්න kubectl krew list
Krew භාවිතයෙන් ස්ථාපනය කර ඇති ප්ලගීන පමණක් පෙන්වයි, නමුත් විධානය kubectl plugin list
සියලුම ප්ලගීන ලැයිස්තුගත කරයි, එනම්, Krew භාවිතයෙන් ස්ථාපනය කර ඇති සහ වෙනත් ක්රම මගින් ස්ථාපනය කර ඇති ඒවා.
වෙනත් තැන්වල ප්ලගින සොයා ගැනීම
Kru යනු තරුණ ව්යාපෘතියකි, දැනට එහි පවතී
මම GitHub කොටස බැලීමට නිර්දේශ කරමි
ඔබේම ප්ලගින ලිවීම
ඔබටම හැකkubectl-x
සහ ඉහත විස්තර කර ඇති පරිදි ස්ථාපනය කරන්න.
ගොනුව බාෂ් ස්ක්රිප්ට් එකක්, පයිතන් ස්ක්රිප්ට් එකක් හෝ සම්පාදනය කළ GO යෙදුමක් විය හැකිය - එය කමක් නැත. එකම කොන්දේසිය වන්නේ එය සෘජුවම මෙහෙයුම් පද්ධතිය තුළ ක්රියාත්මක කළ හැකි බවයි.
අපි දැන් උදාහරණ ප්ලගිනයක් නිර්මාණය කරමු. පෙර කොටසේදී, ඔබ එක් එක් පොඩ් සඳහා බහාලුම් ලැයිස්තුගත කිරීමට kubectl විධානය භාවිතා කළේය. මෙම විධානය ඔබට ඇමතීමට හැකි ප්ලගිනයක් බවට පත් කිරීම පහසුය උදා. kubectl img
.
ගොනුවක් සාදන්න kubectl-img
පහත අන්තර්ගතය:
#!/bin/bash
kubectl get pods -o custom-columns='NAME:metadata.name,IMAGES:spec.containers[*].image'
දැන් file එක executable කරන්න chmod +x kubectl-img
සහ එය ඔබගේ PATH හි ඕනෑම නාමාවලියකට ගෙන යන්න. මෙයින් පසු ඔබට ප්ලගිනය භාවිතා කළ හැකිය kubectl img
.
සඳහන් කළ පරිදි, kubectl ප්ලගීන ඕනෑම ක්රමලේඛන හෝ ස්ක්රිප්ටින් භාෂාවකින් ලිවිය හැක. ඔබ shell scripts භාවිතා කරන්නේ නම්, ප්ලගිනය තුළ සිට kubectl වෙත පහසුවෙන් ඇමතීමට හැකි වීමේ වාසිය. කෙසේ වෙතත්, ඔබට සැබෑ ක්රමලේඛන භාෂාවෙන් වඩාත් සංකීර්ණ ප්ලගීන ලිවිය හැකිය
ඔබගේ ප්ලගින බෙදා ගන්නේ කෙසේද
ඔබේ ප්ලගීන අන් අයට ප්රයෝජනවත් විය හැකි යැයි ඔබ සිතන්නේ නම්, එය GitHub මත බෙදා ගැනීමට නිදහස් වන්න. ඒවා මාතෘකාවට එකතු කිරීමට වග බලා ගන්න
ඔබට ඔබේ ප්ලගිනය එකතු කරන ලෙස ඉල්ලා සිටිය හැක
විධානය සම්පූර්ණ කිරීම
ප්ලගීන දැනට ස්වයංක්රීය සම්පුර්ණ කිරීමට සහය නොදක්වයි. එනම්, ඔබ ප්ලගිනයේ සම්පූර්ණ නම සහ තර්කවල සම්පූර්ණ නම් ඇතුළත් කළ යුතුය.
මෙම කාර්යය සඳහා GitHub kubectl ගබඩාව ඇත
වාසනාව!!!
මාතෘකාව පිළිබඳ තවත් කියවිය යුතු දේ:
Kubernetes හි ස්වයං පරිමාණය කිරීමේ මට්ටම් තුනක් සහ ඒවා ඵලදායී ලෙස භාවිතා කරන්නේ කෙසේද .ක්රියාත්මක කිරීම සඳහා අච්චුවක් සමඟ මුහුදු කොල්ලකෑමේ ආත්මය තුළ Kubernetes .Telegram හි Kubernetes අවට අපගේ නාලිකාව .
මූලාශ්රය: www.habr.com