这是我参与「第五届青训营 」笔记创作活动的第12天,今天我学习了Kubernetes。
为什么需要k8s
从物理机部署服务到虚拟机部署服务,再到容器部署消息。改变的是承载服务的载体,然后,即使是方便的容器部署这样的方式依然需要人工去一一启动容器,监控容器,当一个应用有上百个服务,大量的容器需要管理时候,不论是系统资源的利用,还是容器的启动监控都需要大量的人力物力,这个时候就需要一个容器编排引擎,也就是k8s了,简而言之,k8s就是负责启动容器,自动重启坏死容器,自动调整容器的资源。
引入k8s的利与弊
引入k8s最大的问题就是k8s本身的复杂,吃透k8s需要大量的时间,在踩坑阶段的k8s并不能提供什么生产力的提升。所以很多企业在权衡下并未采用k8s,但是这个是个趋势,在技术逐渐成熟的情况下,不积极了解与学习,终会被淘汰。
学习k8s
先在windows上安装一个k8s用来学习
curl.exe -LO "https://dl.k8s.io/release/v1.26.0/bin/windows/amd64/kubectl.exe"
先下载一个kubectl安装包,官网建议对安装包进行一次校验,我这里偷懒没校验,将 kubectl 二进制文件夹追加或插入到你的 PATH 环境变量中。测试一下,确保此 kubectl 的版本和期望版本一致kubectl version --client
如果docker desktop自带的kubectl在Path中靠前将导致k8s不可以
kubectl是k8s的命令行工具,仅仅安装命令行工具并不能启动k8s,我们还需要一个能启动k8s的工具minikube,下载并运行最新版本的安装程序。或者如果使用PowerShell请使用以下命令:
New-Item -Path 'c:\' -Name 'minikube' -ItemType Directory -Force
Invoke-WebRequest -OutFile 'c:\minikube\minikube.exe' -Uri 'https://github.com/kubernetes/minikube/releases/latest/download/minikube-windows-amd64.exe' -UseBasicParsing
将二进制文件 minikube.exe添加到PATH 确保以管理员身份运行 PowerShell。
$oldPath = [Environment]::GetEnvironmentVariable('Path', [EnvironmentVariableTarget]::Machine)
if ($oldPath.Split(';') -inotcontains 'C:\minikube'){ `
[Environment]::SetEnvironmentVariable('Path', $('{0};C:\minikube' -f $oldPath),[EnvironmentVariableTarget]::Machine) `}