kubernetes扫盲
1. Kubernetes能够解决什么问题?
容器化技术固然很方便,但再好的工具也会产生一些问题。
学习了容器化技术之后,这些棘手问题就产生了:
问题1:怎么解决当容器故障宕机时,启动另一个容器去替补的问题? 问题2:容器的访问是并发式不均匀的,访问量变大时,怎么横向扩展容器数量?
业界最知名的Docker给出了Swarm的自有解决方案,Swarm是一款容器编排软件,能够更合理地编排容器。Kubernetes也是这样的一款容器编排软件,其受欢迎程度位居业界第一。
2. Kubernetes是什么?
Kubernetes是一个用于大规模部署分布式应用的平台,管理一系列的主机或服务器,这些主机或者服务器称作Node节点,每个节点运行着相互独立的Pod,Pod是Kubernetes中可以部署的最小执行单元,是一个或者多个容器的集合。
Pod需要有上层设施管理,管理这些Pod的中心计算机被称作Control Plane/控制平面,控制平面通过控制专有的API与各个节点通信,实时监测节点的网络状态来平衡服务器的负载,或者临时下发指令来处理突发事件。一旦检测到Pod异常,Kubernetes会立即调用备用的容器(Replica Set,副本集合)来替换之。
连同控制平面,上述生态被称之为一个集群(Cluster),代表kubernetes管理的全部主机节点。
3. 配置一个kubernetes集群
- 租一个服务器在其上部署
- 使用minikube来学习k8s
minikube安装官方文档地址:点我
Windows x64版本下载:
管理员打开Windows 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
配置完成后输入
$oldPath = [Environment]::GetEnvironmentVariable('Path', [EnvironmentVariableTarget]::Machine)
if ($oldPath.Split(';') -inotcontains 'C:\minikube'){
[Environment]::SetEnvironmentVariable('Path', $('{0};C:\minikube' -f $oldPath), [EnvironmentVariableTarget]::Machine)
}
有了minikube,只需要使用
minikube start//启动本地模拟集群
即可创建集群!