BÀsta praxis för Kubernetes. Organisera Kubernetes med namnrymder

BÀsta praxis för Kubernetes. Skapa smÄ containrar

Allteftersom du börjar skapa fler och fler Kubernetes-tjÀnster blir de enkla uppgifterna mer komplicerade. Till exempel kan utvecklarteam inte skapa tjÀnster eller distributioner med samma namn. Om du har tusentals pods kan bara upprÀkningen av dem ta mycket tid, för att inte tala om att sÀkerstÀlla korrekt hantering. Och det hÀr Àr bara toppen av isberget.

LÄt oss titta pÄ hur namespaces underlÀttar hanteringen av Kubernetes-resurser. SÄ vad Àr egentligen ett namespace? Ett namespace kan ses som en virtuell kluster inom ditt Kubernetes-kluster. Du kan ha flera isolerade namespaces inom ett och samma Kubernetes-kluster. De kan verkligen hjÀlpa dig och dina team med organisation, sÀkerhet och till och med systemets prestanda.

BÀsta praxis för Kubernetes. Organisera Kubernetes med namnrymder

I de flesta Kubernetes-distributioner kommer klustret "out of the box" med ett namespace som kallas "default". Det finns faktiskt tre namespaces som Kubernetes arbetar med: default, kube-system och kube-public. För nÀrvarande anvÀnds kube-public inte sÄ ofta.

BÀsta praxis för Kubernetes. Organisera Kubernetes med namnrymder

Att lÀmna kube-namespacet orört Àr en bra idé, sÀrskilt i ett hanterat system som Google Kubernetes Engine. Det anvÀnder namespace "default" som en plats dÀr dina tjÀnster och applikationer skapas. Det finns ingenting speciellt med det, förutom att Kubernetes Àr konfigurerat för att anvÀnda det "utanför boxen", och du kan inte ta bort det. Det Àr bra för att komma igÄng och för system med lÄg prestanda, men jag skulle inte rekommendera att anvÀnda default namespace i stora produktionssystem. I det sista fallet kan ett utvecklarteam lÀtt skriva över nÄgon annans kod och störa en annan teams arbete utan att ens vara medveten om det.

DÀrför bör du skapa flera namespaces och anvÀnda dem för att segmentera dina tjÀnster i hanterade enheter. Ett namespace kan skapas med ett enda kommando. Om du vill skapa ett namespace som heter test, anvÀnd kommandot $ kubectl create namespace test, eller skapa bara en YAML-fil och anvÀnd den som vilken annan Kubernetes-resurs som helst.

BÀsta praxis för Kubernetes. Organisera Kubernetes med namnrymder

Du kan se alla namespaces med kommandot $ kubectl get namespace.

BÀsta praxis för Kubernetes. Organisera Kubernetes med namnrymder

NÀr du har genomfört detta kommer du att se tre inbyggda namnutrymmen och ett nytt namnutrymme som heter "test". LÄt oss titta pÄ en enkel YAML-fil avsedd för att skapa en pod. Du kan mÀrka att det inte finns nÄgon hÀnvisning till namnutrymmet.

BÀsta praxis för Kubernetes. Organisera Kubernetes med namnrymder

Om du anvÀnder kubectl för att köra denna fil kommer den att skapa modulen mypod i det aktuella aktiva namnutrymmet. Detta kommer att vara standardnamnutrymmet tills du Àndrar det. Det finns tvÄ sÀtt att informera Kubernetes om vilket namnutrymme du vill skapa din resurs i. Det första sÀttet Àr att anvÀnda flaggan för namnutrymme nÀr du skapar resursen.

BÀsta praxis för Kubernetes. Organisera Kubernetes med namnrymder

Det andra sÀttet Àr att ange namnutrymmet i YAML-deklarationen.

BÀsta praxis för Kubernetes. Organisera Kubernetes med namnrymder

Om du anger namnutrymmet i YAML kommer resursen alltid att skapas i detta namnutrymme. Om du försöker anvÀnda ett annat namnutrymme med flaggan för namnutrymme kommer kommandot att avslutas med ett fel. Nu, om du försöker hitta din pod, kommer du inte att kunna göra det.

BÀsta praxis för Kubernetes. Organisera Kubernetes med namnrymder

Detta beror pÄ att alla kommandon körs utanför det aktuella aktiva namnutrymmet. För att hitta din pod mÄste du anvÀnda flaggan för namnutrymme, men det blir snabbt tröttsamt, sÀrskilt om du arbetar som utvecklare i en grupp som anvÀnder sitt eget namnutrymme och inte vill anvÀnda en sÄdan flagga för varje enskilt kommando. LÄt oss se hur detta kan lösas.

BÀsta praxis för Kubernetes. Organisera Kubernetes med namnrymder

Som standard heter ditt aktiva namnutrymme default. Om du inte specificerar namnutrymme i resursens YAML kommer alla Kubernetes-kommandon att anvÀnda detta aktiva default namespace. TyvÀrr kan försök att hantera det aktiva namnutrymmet med kubectl misslyckas. Men det finns ett mycket bra verktyg som heter Kubens, vilket förenklar denna process avsevÀrt. NÀr du kör kommandot kubens ser du alla namnutrymmen med det aktiva namnutrymmet markerat.

BÀsta praxis för Kubernetes. Organisera Kubernetes med namnrymder

För att byta det aktiva namnutrymmet till namnutrymmet test kör du helt enkelt kommandot $ kubens test. Om du sedan skriver in kommandot $ kubens igen kommer du att se att det nu markerade nya aktiva namnutrymmet Ă€r – test.

BÀsta praxis för Kubernetes. Organisera Kubernetes med namnrymder

Det innebÀr att du inte behöver ett namnrymdsflagga för att se pod i namnrymden test.

BÀsta praxis för Kubernetes. Organisera Kubernetes med namnrymder

SÄledes Àr namnrymder dolda för varandra, men de Àr inte isolerade frÄn varandra. En tjÀnst frÄn en namnrymd kan ganska enkelt kommunicera med en tjÀnst i en annan namnrymd, vilket ofta Àr mycket anvÀndbart. Möjligheten till kommunikation mellan olika namnrymder innebÀr att din utvecklargrupps tjÀnst kan interagera med en tjÀnst frÄn en annan utvecklingsteam i en annan namnrymd.

Vanligtvis, nÀr din applikation vill fÄ Ätkomst till en Kubernetes-tjÀnst, anvÀnder du den inbyggda DNS-upptÀckten och anger helt enkelt tjÀnstens namn för din applikation. Men du kan skapa en tjÀnst med samma namn i flera namnrymder, vilket inte Àr tillÄtet.

BÀsta praxis för Kubernetes. Organisera Kubernetes med namnrymder

Lyckligtvis Àr det enkelt att kringgÄ detta genom att anvÀnda det utvidgade formatet för DNS-adresser. TjÀnster i Kubernetes exponerar sina slutpunkter med hjÀlp av ett gemensamt DNS-mönster. Det ser ungefÀr ut sÄ hÀr:

BÀsta praxis för Kubernetes. Organisera Kubernetes med namnrymder

I allmÀnhet behöver du bara tjÀnstens namn, och DNS kommer automatiskt att bestÀmma den fullstÀndiga adressen.

BÀsta praxis för Kubernetes. Organisera Kubernetes med namnrymder

Men om du behöver fÄ Ätkomst till en tjÀnst i en annan namnrymnd, anvÀnd helt enkelt tjÀnstens namn plus namnrymden:

BÀsta praxis för Kubernetes. Organisera Kubernetes med namnrymder

Till exempel, om du vill ansluta till databasens tjÀnst i testnamnrymden kan du anvÀnda adressen database.test.

BÀsta praxis för Kubernetes. Organisera Kubernetes med namnrymder

Om du istÀllet vill ansluta till databasens tjÀnst i produktionsnamnrymden anvÀnder du database.prod.

BÀsta praxis för Kubernetes. Organisera Kubernetes med namnrymder

Om du verkligen vill isolera och begrÀnsa Ätkomst till namnrymden, lÄter Kubernetes dig göra det med hjÀlp av Kubernetes nÀtverkspolicyer. Mer om detta kommer jag att berÀtta i nÀsta del.

Jag fÄr ofta frÄgan hur mÄnga namnrymder man ska skapa och i vilka syften? Vad innebÀr en förvaltad datasegment?

Om du skapar för mÄnga namnruvar kommer de bara att stÄ i vÀgen för dig. Om det dÀremot finns för fÄ namnruvar förlorar du alla fördelar med en sÄdan lösning. Jag tror att det finns fyra grundlÀggande steg som varje företag gÄr igenom i processen att skapa sin organisatoriska struktur. Beroende pÄ den utvecklingsfas som ditt projekt eller företag befinner sig i kan du tillÀmpa en lÀmplig strategi för att skapa namnrum.

FörestÀll dig att du Àr en del av ett litet team som arbetar med att utveckla 5-10 mikrotjÀnster och du lÀtt kan samla alla utvecklare i ett rum. I denna situation Àr det meningsfullt att starta alla prod-tjÀnster i namnrymden default. SjÀlvklart kan du för större handlingsutrymme anvÀnda 2 namnrum - ett för prod och ett för dev. Och det Àr troligt att du testar din utveckling pÄ din lokala dator med hjÀlp av nÄgot som Minikube.

Anta att omstÀndigheterna har förÀndrats och nu har du ett snabbt vÀxande team som samtidigt arbetar med fler Àn 10 mikrotjÀnster. Det kommer en tid dÄ det Àr nödvÀndigt att anvÀnda flera kluster eller namnrum, separerade för prod och dev. Teamet kan delas in i flera undergrupper sÄ att varje grupp har sina egna mikrotjÀnster och var och en av dessa grupper kan vÀlja sitt eget namnrum för att underlÀtta hanteringen av utveckling och programvaruleverans.

BÀsta praxis för Kubernetes. Organisera Kubernetes med namnrymder

I takt med att varje medlem i teamet fÄr en uppfattning om hur systemet fungerar som helhet blir det allt svÄrare att koordinera varje förÀndring med alla andra utvecklare. Att försöka rulla ut hela stacken pÄ din lokala dator blir svÄrare för varje dag.

I stora företag vet inte utvecklarna vem som arbetar med vad. Team kommunicerar genom serviceavtal eller anvÀnder teknologin Service mesh, som lÀgger till en abstraktionsnivÄ ovanpÄ nÀtverket, typ konfigurationsverktyget Istio. Att försöka köra hela stacken lokalt Àr helt enkelt omöjligt. Jag rekommenderar starkt att anvÀnda en plattform för kontinuerlig leverans (CD) som Spinnaker i Kubernetes. SÄ, det kommer en tid nÀr varje team definitivt behöver sitt eget namnrum. Varje team kan till och med vÀlja flera namnrum för utvecklings- och produktionsmiljöer.

Slutligen finns det stora företagsorganisationer dÀr en grupp utvecklare inte ens kÀnner till andra gruppers existens. Ett sÄdant företag kan till och med anstÀlla externa utvecklare som kommunicerar genom vÀl dokumenterade API:er. I varje sÄdan grupp finns det flera team och flera mikrotjÀnster. I det hÀr fallet Àr det nödvÀndigt att anvÀnda alla verktyg jag talade om tidigare.

BÀsta praxis för Kubernetes. Organisera Kubernetes med namnrymder

Programmerare ska inte manuellt distribuera tjÀnster och ska inte ha tillgÄng till namnrum som inte berör dem. I det hÀr skedet Àr det lÀmpligt att ha flera kluster för att minska "explosionsradien" av dÄligt konfigurerade applikationer, för att förenkla faktureringsprocesser och resursförvaltning.

SÄledes gör rÀtt anvÀndning av namnrum i din organisation Kubernetes mer hanterbart, kontrollerat, sÀkert och flexibelt.

BÀsta praxis för Kubernetes. Kontroll av Kubernetes livskraft med hjÀlp av Readiness- och Liveness-tester

Spela video

Lite reklam 🙂

Tack för att ni stannar kvar hos oss. Gillar ni vÄra artiklar? Vill ni se fler intressanta material? Stöd oss genom att göra en bestÀllning eller rekommendera oss till era vÀnner, moln-VPS för utvecklare frÄn $4,99, en unik motsvarighet till entry-level servrar som vi har skapat för er: Allt om VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps frÄn $19 eller hur man korrekt delar en server? (alternativ med RAID1 och RAID10 finns tillgÀngliga, upp till 24 kÀrnor och upp till 40GB DDR4).

Dell R730xd Ă€r tvĂ„ gĂ„nger billigare i datacentret Equinix Tier IV i Amsterdam? Bara hos oss 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100TB frĂ„n $199 i NederlĂ€nderna! Dell R420 — 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB — frĂ„n $99! LĂ€s om Hur man bygger en företagsinfrastruktur med Dell R730xd E5-2650 v4-servrar som kostar 9000 euro för en brĂ„kdel?

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster