Ең жақсы 10 Kubernetes трюктері мен кеңестері

Ең жақсы 10 Kubernetes трюктері мен кеңестері

Интернетте көптеген анықтамалық әдебиеттер бар, бірақ кейде ең қарапайым кеңес ең құнды болып табылады. Команда Mail.ru сайтынан Kubernetes aaS аударылған он амалдар мен кеңестердің таңдауы, оны мақала авторы Кубернетеспен бір жыл жұмыс істегеннен кейін жинады. Кеңестер маңыздылығы бойынша сұрыпталмаған, бірақ әркім өзі үшін пайдалы нәрсе табады деп ойлаймыз.

Кубернетеспен жұмыс істеудің ең қарапайым пәрмені

Алдымен, Кубернетеспен жұмыс істеудегі ең қарапайым және пайдалы әрекет болуы мүмкін. Келесі пәрмен пәрменді аяқтауға мүмкіндік береді kubectl bash қабығында:

echo "source <(kubectl completion bash)" >> ~/.bashrc

Автотолтыру kubectl .bashrc файлына жазылады және қабық іске қосылған сайын автоматты түрде белсендіріледі. Бұл ұзақ командалар мен параметрлерді теруді жылдамдатады all-namespaces. Толығырақ Kubernetes bash көмегі.

Атау кеңістігіндегі әдепкі жад және CPU шектеулері

Егер қолданба қате жазылған болса, мысалы, ол әр секунд сайын дерекқорға жаңа қосылым ашады, бірақ оны ешқашан жаппайды, онда кластерде жадтың ағуы бар. Ал егер қолданбада орналастыру кезінде орнатылған жад шектеуі болмаса, бұл түйін сәтсіздігіне әкелуі мүмкін.

Бұған жол бермеу үшін Kubernetes әр аттар кеңістігі негізінде әдепкі шектеулерді орнатуға мүмкіндік береді. Олар арнайы аттар кеңістігі үшін yaml файлында жазылған. Міне, осындай файлдың мысалы:

apiVersion: v1
kind: LimitRange
metadata:
  name: mem-limit-range
spec:
  limits:
  - default:
      memory: 512Mi
    defaultRequest:
      memory: 256Mi
    type: Container

Мұндай ямл жасаңыз және кез келген аттар кеңістігіне қолданыңыз. Мысалы, аттар кеңістігіне limit-example. Енді осы аттар кеңістігінде орналастырылған кез келген контейнерде 512Mi шегі болады, егер бұл контейнер үшін басқа жеке шектеу қосымша орнатылмаса.

Kubernetes ескі нұсқаларында қоқыс жинау

Kubelet әдепкі бойынша қоқыс жинауды қашан бастайды var/lib/docker қол жетімді дискілік кеңістіктің 90% алады. Бұл өте жақсы, дегенмен Kubernetes 1.7 нұсқасына дейін файлдық жүйедегі файлдар санына сәйкес келетін инодтар санында әдепкі шектеу болған жоқ.

Ықтимал сіздің контейнеріңіз var/lib/docker дискілік кеңістіктің 50%-ын ғана пайдалануы мүмкін, бірақ жұмысшыларға қиындық тудыратын инодтар таусылуы мүмкін.

Kubelet-тің 1.4-тен 1.6-ға дейінгі ескі нұсқаларында мына жалаушаны қосу керек:

--eviction-hard
=memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%

1.7 және одан кейінгі нұсқаларда бұл жалауша әдепкі бойынша орнатылады. Дегенмен, алдыңғы нұсқалар инод шегін бақыламайды.

Minikube... шағын, бірақ қуатты жергілікті Кубернетес

Minikube - жергілікті Kubernetes кластерін басқарудың ең оңай жолы. Ол қарапайым пәрменмен іске қосылады:

minikube start

Бұл пәрменді іске қосу сіздің компьютеріңізде нақты Kubernetes кластерін іске қосады.

Ең жақсы 10 Kubernetes трюктері мен кеңестері
Иллюстрация көзі

Қолданбаны құру және оны сол кластерде жергілікті түрде іске қосу әдісі. Арнайы нұсқау болмаса, Docker кескіні кластерде емес, сіздің компьютеріңізде құрастырылады.

Docker кескінді жергілікті Kubernetes кластеріне итеруге мәжбүрлеу үшін докер машинасына келесі пәрмен беріледі:

eval $(minikube docker-env)

Енді біз жергілікті Kubernetes кластерінде қолданбаларды құра аламыз.

kubectl барлығына рұқсат бермеңіз

Бұл анық көрінеді, бірақ егер бірнеше команда өз қолданбалары үшін бір кластерді пайдаланса (Кубернетес осы үшін жасалған), сіз барлығына жай ғана бермеуіңіз керек. kubectl. Пәрмендерді бөліп, олардың әрқайсысына жеке аттар кеңістігін тағайындап, RBAC саясаттары арқылы қол жеткізуді шектеген дұрыс.

Әрбір подводқа кіру, оқу, жасау, жою және басқа әрекеттерге құқықтарды тағайындау арқылы шатастыруға болады. Бірақ ең бастысы - құпияларға қол жеткізуді шектеу, оған тек әкімшілерге рұқсат беру. Осылайша біз кластерді басқара алатындар мен оған жай ғана орналастыра алатындар арасындағы айырмашылықты анықтаймыз.

Pod бюджеттерін басқару

Kubernetes кластеріндегі қолданбаның тоқтап қалуын қалай қамтамасыз етуге болады? PodDisruptionBudget және қайтадан PodDisruptionBudget.

Кластерлер мерзімді түрде жаңартылып отырады және түйіндер босатылады. Ештеңе тұрмайды, бұл шындық. Бірден көп данасы бар әрбір орналастыруда PDB (PodDisruptionBudget) болуы керек. Ол кластерге қолданылатын қарапайым yaml файлында жасалады. Белгілі бір PDB қамту аймағы жапсырма селекторлары арқылы анықталады.

Ескертпе: ПДБ бюджеті бюджетті бұзу қайтарылатын кезде ғана есепке алынады (ерікті бұзу). Аппараттық құрал ақаулары сияқты жағдайларда PDB жұмыс істемейді.

PDB мысалы:

apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
  name: app-a-pdb
spec:
  minAvailable: 2
  selector:
      matchLabels:
        app: app-a

Екі негізгі параметр болып табылады matchLabels и minAvailable. Бірінші параметр бюджет қай қолданбаларға қолданылатынын көрсетеді. Мысалы, менде белгілермен орналастыруларым болса app: app-a и app: app-b, онда бұл PDB біріншісіне ғана қолданылады.

Параметр minAvailable түйінді босату (тазалау) кезінде ескеріледі. Мысалы, біздің мысалда босату кезінде барлық инстанциялар шығарылады app: app-a, екеуінен басқа.

Бұл кез келген уақытта қолданбаның қанша данасы іске қосылуы керектігін басқаруға мүмкіндік береді.

Қолданбаның денсаулығын бақылау

Мұндай бақылау екі жолмен мүмкін болады: Дайындық немесе Жандылық тесттерін пайдалану.

Бірінші зонд (дайындық) контейнердің трафикті қабылдауға дайындығын анықтайды.

Екіншісі (жандылық) контейнердің сау немесе қайта іске қосылуы қажет екенін көрсетеді.

Тиісті конфигурациялар орналастыру үшін yaml-ге жай ғана қосылады. Онда сіз күту уақытын, кешігу уақытын және қайта сынақтар санын көрсете аласыз. Олар туралы толығырақ мәліметтерді қараңыз Kubernetes құжаттамасы.

Тегтер барлық жерде бар

Белгілер Кубернетестің негізгі ұғымдарының бірі болып табылады. Олар объектілердің бір-бірімен еркін байланысуына мүмкіндік береді, сонымен қатар белгілерге негізделген сұраулар жасайды. Kubernetes-те сіз тіпті клиентке барып, нақты тегтер үшін оқиғаларды көре аласыз.

Тегтермен дерлік кез келген нәрсені жасауға болады, бірақ бір кластерде бағдарламаларды іске қосу үшін бірнеше ортаны жасау жақсы мысал бола алады.

үшін бірдей кластерді пайдаланасыз делік dev и qa. Бұл сізде қосымша болуы мүмкін дегенді білдіреді app-a, бір уақытта екі ортада жұмыс істейді qa и dev. Бұл жағдайда сәйкес параметрді көрсету арқылы нақты ортадағы қолданба данасына бөлек қол жеткізе аламыз environment. Мысалы, app: app-a и environment: dev бір орта үшін және app: app-a и environment: qa екіншісі үшін.

Бұл қолданбаның екі данасына да қол жеткізуге мүмкіндік береді, мысалы, тестілеуді бір уақытта жүргізу.

Заттарды ретке келтіріңіз

Kubernetes - өте қуатты жүйе, бірақ кез келген жүйе тым көп процестерге батып кетуі мүмкін. Kubelet сіз көрсеткен барлық процестерді және тексерулерді, сондай-ақ өзімен бірге іске қосады.

Әрине, бір жетім қызмет жүйені бәсеңдетпейді және Kubernetes басынан бастап масштабтауға арналған. Бірақ егер бір қызметтің орнына миллион пайда болса, кубелет тұншыға бастайды.

Егер қандай да бір себептермен орналастыруды (контейнер, сурет, кез келген нәрсе) жойсаңыз, толық тазалауды орындаңыз.

Go кездесуі

Біз негізгі кеңесті соңғы уақытқа сақтадық. Go бағдарламалау тілін үйреніңіз.

Kubernetes Go бағдарламасында әзірленген, барлық кеңейтімдер Go бағдарламасында жазылған және клиент-go клиенттік кітапханасына да ресми түрде қолдау көрсетіледі.

Оны әртүрлі және қызықты нәрселер үшін пайдалануға болады. Мысалы, Kubernetes жүйесін сіздің талғамыңызға қарай кеңейту. Сонымен, деректерді жинау, қолданбаларды орналастыру немесе жай ғана контейнерлерді тазалау үшін өзіңіздің бағдарламаларыңызды пайдалана аласыз.

Go бағдарламалау тілін үйрену және client-go-ны меңгеру Kubernetes-тің жаңа пайдаланушыларына бере алатын ең маңызды кеңес болуы мүмкін.

Mail.ru Cloud Solutions қолдауымен аударылған

Тағы не оқу керек:

  1. Kubernetes-тегі автомасштабтаудың үш деңгейі және оларды қалай тиімді пайдалану керек.
  2. Kubernetes жұмысшы түйіндері: көптеген кішкентайлар немесе бірнеше үлкендер?
  3. 25 Kubernetes қолдану және басқару үшін пайдалы құралдар.

Ақпарат көзі: www.habr.com

пікір қалдыру