ebook img

The Kubernetes Book PDF

291 Pages·2023·19.865 MB·English
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview The Kubernetes Book

The Kubernetes Book Nigel Poulton Thisbookisforsaleathttp://leanpub.com/thekubernetesbook Thisversionwaspublishedon2023-01-31 ThisisaLeanpubbook.LeanpubempowersauthorsandpublisherswiththeLean Publishingprocess.LeanPublishingistheactofpublishinganin-progressebookusing lightweighttoolsandmanyiterationstogetreaderfeedback,pivotuntilyouhavethe rightbookandbuildtractiononceyoudo. ©2017-2023NigelPoulton Tweet This Book! PleasehelpNigelPoultonbyspreadingthewordaboutthisbookonTwitter! Thesuggestedtweetforthisbookis: IjustboughtTheKubernetesBookfrom@nigelpoultonandcan’twaittogetintothis! Thesuggestedhashtagforthisbookis#kubernetes. Findoutwhatotherpeoplearesayingaboutthebookbyclickingonthislinktosearch forthishashtagonTwitter: #kubernetes Educationisaboutinspiringandcreatingopportunities.Ihopethisbook,andmyvideotraining courses,inspireyouandcreatelotsofopportunities! Ahugethankstomyfamilyforputtingupwithme.I’mageekwhothinkshe’ssoftwarerunning onmidrangebiologicalhardware.Iknowit’snoteasylivingwithme. ThankstoeveryonewhowatchesmyPluralsightandACloudGurutrainingvideos.Ilove connectingwithyouandappreciateallthefeedbackI’vehadovertheyears.Thisfeedbackiswhat inspiredmetowritethisbook.Ithinkyou’llloveit,andIhopeithelpsdriveyourcareerforward. @nigelpoulton Contents 0:Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 EditionsPaperbacks,hardbacks,eBooks,audio,andtranslations . . . . . . . . . . 1 ThesampleappandGitHubrepo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Responsiblelanguage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Feedbackandcontactingme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1:Kubernetesprimer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Kubernetesbackground . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Kubernetesastheoperatingsystemofthecloud . . . . . . . . . . . . . . . . . . . . 9 Chaptersummary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2:Kubernetesprinciplesofoperation. . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Kubernetesfrom40Kfeet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Controlplaneandworkernodes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 KubernetesDNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 PackagingappsforKubernetes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Thedeclarativemodelanddesiredstate . . . . . . . . . . . . . . . . . . . . . . . . . 21 Pods. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Deployments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Serviceobjectsandstablenetworking . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Chaptersummary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3:GettingKubernetes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 CreatingaKubernetesclusteronyourlaptop . . . . . . . . . . . . . . . . . . . . . . 29 CreatingahostedKubernetesclusterinthecloud . . . . . . . . . . . . . . . . . . . 34 Installandworkwithkubectl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Chaptersummary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 4:WorkingwithPods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Podtheory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Multi-containerPods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Hands-onwithPods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Clean-up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 CONTENTS ChapterSummary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 5:VirtualclusterswithNamespaces. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 UsecasesforNamespaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 InspectingNamespaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 CreatingandmanagingNamespaces . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 DeployingtoNamespaces. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Clean-up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 ChapterSummary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 6:KubernetesDeployments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Deploymenttheory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 CreateaDeployment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Performscalingoperations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 Performarollingupdate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 Performarollback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 Clean-up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 Chaptersummary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 7:KubernetesServices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 ServiceTheory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 Hands-onwithServices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .102 Clean-up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .112 ChapterSummary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .112 8:Ingress . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .113 SettingtheSceneforIngress . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .113 Ingressarchitecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .114 Hands-onwithIngress . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .116 Clean-up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .125 Chaptersummary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .126 9:Servicediscoverydeepdive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .127 Quickbackground . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .127 Serviceregistration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .128 Servicediscovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .132 ServicediscoveryandNamespaces . . . . . . . . . . . . . . . . . . . . . . . . . . . .135 Troubleshootingservicediscovery . . . . . . . . . . . . . . . . . . . . . . . . . . . .141 Chaptersummary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .143 10:Kubernetesstorage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .144 Thebigpicture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .144 StorageProviders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .146 TheContainerStorageInterface(CSI) . . . . . . . . . . . . . . . . . . . . . . . . . .147 CONTENTS TheKubernetespersistentvolumesubsystem . . . . . . . . . . . . . . . . . . . . . .147 DynamicprovisioningwithStorageClasses . . . . . . . . . . . . . . . . . . . . . . .149 Hands-on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .153 Clean-up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .159 ChapterSummary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .159 11:ConfigMapsandSecrets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .160 Thebigpicture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .160 ConfigMaptheory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .162 Hands-onwithConfigMaps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .165 Hands-onwithSecrets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .176 Clean-up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .180 ChapterSummary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .180 12:StatefulSets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .181 ThetheoryofStatefulSets. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .181 Hands-onwithStatefulSets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .186 ChapterSummary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .198 13:APIsecurityandRBAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .199 APIsecuritybigpicture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .199 Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .200 Authorization(RBAC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .202 Admissioncontrol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .210 Chaptersummary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .211 14:TheKubernetesAPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .212 KubernetesAPIbigpicture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .212 TheAPIserver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .215 TheAPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .220 Chaptersummary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .232 15:ThreatmodelingKubernetes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .234 Threatmodeling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .234 Spoofing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .234 Tampering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .237 Repudiation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .239 InformationDisclosure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .241 DenialofService . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .242 Elevationofprivilege . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .245 Chaptersummary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .257 16:Real-worldKubernetessecurity . . . . . . . . . . . . . . . . . . . . . . . . . . . . .258 CI/CDpipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .258 CONTENTS Infrastructureandnetworking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .264 Identityandaccessmanagement(IAM) . . . . . . . . . . . . . . . . . . . . . . . . . .270 Auditingandsecuritymonitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . .271 Realworldexample . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .274 Chaptersummary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .274 Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .275 Outro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .282 Aboutthefrontcover . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .282 Awordonthebook’sdiagrams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .282 Connectwithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .283 Feedbackandreviews . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .283 0: Preface Kubernetesisdevelopingfast.Withthisinmind,I’mfullycommittedtoupdatingthis bookeveryyear.AndwhenIsay“update”,Imeanrealupdates–everywordandevery conceptwillbereviewed,andeveryexamplewillbetestedandupdatedagainstthelatest versionsofKubernetes.I’m100%committedtomakingthisthebestKubernetesbookin theworld. Asanauthor,I’dlovetowriteabookandnevertouchitagainfor5years.Unfortunately, thatdoesn’tworkforKubernetes–atwo-year-oldbookonKubernetescouldbe dangerouslyoutofdate. Editions Paperbacks, hardbacks, eBooks, audio, and translations Thefollowingeditionsofthebookareavailable,orsoonwillbe: • Paperback:English,SimplifiedChinese,Spanish,Portuguese • Hardback:English • eBook:English,Russian,Spanish,Portuguese eBookcopiesareavailableonKindleandfromLeanPub. Previouseditionshadalarge-printpaperbackedition.However,Amazondoesnot haveausefulwayoflistingandsearchingforlarge-printbooksandthebookwas almostimpossibletofind.IfthischangesinthefutureIwillmakealarge-printedition available. Finally,there’sacoupleofcollector’seditions: • Klingonpaperback • Borghardback TheKlingoneditionhasaspecialfront-coverwritteninKlingontext.TheBorgedition hasaspecialfront-coverwritteninBorgtext.Therestofthebooksisexactlythesame astheEnglishlanguageedition. 0:Preface 2 The sample app and GitHub repo There’saGitHubrepowithalltheYAMLandcodeusedthroughoutthebook. Youcancloneitwiththefollowingcommand.You’llneedgitinstalled.Thiswillcreate anewfolderinyourcurrentworkingdirectorycalledTheK8sBookwithallthefilesyou needtofollowtheexamples. $ git clone https://github.com/nigelpoulton/TheK8sBook.git Don’tstressifyou’veneverusedgit.Thebookwalksyouthrougheverythingyouneed todo. Responsible language ThebookfollowsguidelinesissuedbytheInclusiveNamingInitiative(inclusivenam- ing.org)whichpromotesresponsiblelanguageandtriestoavoidharmfulterms.Asan example,theKubernetesprojecthasreplacedtheterm“master”with“controlplane node”.Thisbookdoesthesameandattemptstofollowallpublishedguidance. Feedback and contacting me Ifyoulikethebook,I’dconsideryoufamilyifyouleaveareviewandafewstarson Amazon. Youcanalsoreachmeonanyofthefollowing: • Twitter:twitter.com/nigelpoulton • LinkedIn:linkedin.com/in/nigelpoulton • Mastodon:@[email protected] • Web:nigelpoulton.com • YouTube:youtube.com/nigelpoulton Ifyouhaveacontentsuggestionorapotentialfix,[email protected]. I’lldomybesttorespond. Let’sgetstarted!

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.