Docker最开始是一个管理容器的工具,后来发展成为容器云。容器云以容器为资源分割和调度的基本单位,封装整个软件运行时环境,为开发者和系统管理员提供用于构建、发布和运行分布式应用的平台。当容器云专注于资源共享与隔离、容器编排与部署时,它更接近传统的IaaS;当容器云渗透到应用支撑与运行时环境时,它是一种PaaS。
但是,如果想要将Docker应用于具体的业务实现,是存在困难的——编排、管理和调度等各个方面,都不容易。于是,人们迫切需要一套管理系统,对Docker及容器进行更高级更灵活的管理。于是,Kubernetes出现了。Kubernetes这个单词来自于希腊语,含义是舵手或领航员。缩写为K8S,8代表“ubernete”这8个字符。
更多内容,参考10分钟看懂Docker和K8S和浙大SEL实验室的《Docker 容器与容器云》。
- BorgMaster 是整个集群的大脑,负责维护整个集群的状态,并将数据持久化到 Paxos 存储中;
- Scheduer 负责任务的调度,根据应用的特点将其调度到具体的机器上去;
- Borglet 负责真正运行任务(在容器中);
- borgcfg 是 Borg 的命令行工具,用于跟 Borg 系统交互,一般通过一个配置文件来提交任务。
Master节点包括API Server、Scheduler、Controller manager、Etcd等。
- API Server提供了资源操作的唯一入口,并提供认证、授权、访问控制、API 注册和发现等机制;
- Scheduler负责资源的调度,按照预定的调度策略将 Pod 调度到相应的机器上;
- Controller manager负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;
- Etcd保存了整个集群的状态。
Node节点包括Docker、Kubelet、Proxy、Pod等。
- Docker负责管理容器。
- Kubelet负责维护容器的生命周期,同时也负责 Volume(CVI)和网络(CNI)的管理;
- Proxy负责为Pod对象提供代理。
- Pod是Kubernetes最基本的操作单元。一个Pod代表着集群中运行的一个进程,它内部封装了一个或多个紧密相关的容器。除了Pod之外,K8S还有一个Service的概念,一个Service可以看作一组提供相同服务的Pod的对外访问接口。
除了核心组件,还有一些推荐的 Add-ons:
- kube-dns 负责为整个集群提供 DNS 服务
- Ingress Controller 为服务提供外网入口
- Heapster 提供资源监控
- Dashboard 提供 GUI
- Federation 提供跨可用区的集群
- Fluentd-elasticsearch 提供集群日志采集、存储与查询
更多内容,参考Kubernetes 架构原理。
Minikube是在个人计算机上的虚拟机中运行单节点Kubernetes集群的工具。因为minikube要启动virtualbox虚拟机,在虚拟机中运行k8s集群。所以这里有两个安装思路:
思路一:在centos7虚拟机中安装virtualbox,以及minikube。
思路二:在本机win10中安装virtualbox,以及minikube。
对于思路一,因为virtualbox不支持Intel处理器的嵌套虚拟化,因此minikube无法在centos7虚拟机中再启动虚拟机,该思路不可行。
本文接下来使用思路二进行安装,默认virtualbox已经安装完成。安装方法参考
- Install Minikube and Docker with VirtualBox on Windows 10 Home
- Kubernetes 学习笔记之 MiniKube 安装
1、下载Docker Toolbox,双击安装。
2、启动Docker Toolbox
打开Docker quickstart terminal,Docker会进行初始化。
参考《Docker镜像站的配置和使用》配置镜像加速器,本文中使用阿里云的镜像加速器。
1、访问阿里云镜像加速器,得到一个专属的加速地址。
2、对于Docker Toolbox用户,首先进入default虚拟机
3、设置加速地址
4、验证配置
如果出现Registry Mirrors和加速地址,则表明设置成功。
常用命令:
1、下载阿里云版minikube v1.2.0,放入k8s目录,重命名为minikube.exe,并加入环境变量。其他版本修改下载的url即可,版本号可以在github aliyun minikube中找到。
之所以使用阿里云版minikube,是因为原版的minikube在国内启动失败,无法下载Minikube ISO镜像。
2、验证安装
右键+Shift打开Powershell,输入
3、启动minikube
5、启动minikube dashboard
其他安装方式参考Install Minikube。
1、下载kubectl,同样放到k8s目录。
2、验证安装
参考Hello Minikube,目标:
- 将部署hello world应用程序部署到Minikube。
- 运行应用程序。
- 查看应用日志。
1、使用git bash启动minikube
2、准备镜像
其中server.js写入内容为:
Dockerfile写入内容为:
3、创建管理Pod的Deployment,Pod根据提供的Docker镜像运行容器。
4、查看Deployments和Pods
5、创建服务,将Pod公开到公共Internet
6、查看Pod和Service
7、删除service和deployment(可选)
8、关闭集群,删除集群(可选)