Kubernetes (k8s)
简介
面向云原生应用 - 以Google Borg(Google内部容器管理平台)为原型重新设计和实现的容器管理和编排调用工具。
云原生模式
随着容器技术的出现以及应用面临的外部环境变化,云原生成为一种应用云化开发、部署和运行的主流方式。
容器 - 应用部署、运行和管理的基本单元
基础 - 应用的容器化和微服务化
核心 - 借助容器管理自动化平台进行动态编排和资源优化利用
功能
容器编排管理平台、微服务支撑平台、可移植的“云平台”
Kubernetes基本概念
Pods
一个pod是k8s中应用的最小单元,pod可以由多个容器组成,有如下特性:
1.单一IP地址
2.共享localhost
3.共享网络端口
4.共享卷(volumes)
5.共享IPC(inter-process communication)空间
在pod中的容器是通过localhost进行通信,而pod之间的通信是由services来实现的。
ReplicaSets
由于pods具有非永恒性(如果终止,便代表结束),那么我们如何处理同个pod的多个版本运行?
引入了replication controller,该控制器位于pod资源类型的上层来对其进行控制,可以有效防止失败/错误的发生;
由此有了replica set,代表指定数量的需要运行的pods的集合。
Services
在k8s中,一个服务(service)是pods之间通信的基础,就像pods之间的网络抽象。
注:服务允许k8s为pods设置单一的DNS记录。
Deployments
部署资源类型(deployment resource type)位于replica set的上层操作。
一般来说,升级需要替换整个replica set,这样会导致应用停机进行升级;因此,k8s采用滚动升级(rolling upgrade), 使得我们可以不用停机就可以进行升级。
总结
Deployments控制replica sets,然后replica sets控制pods。
注意:使用部署资源类型时仍然需要用服务访问。
k8s相关工具
Install and Set Up kubectl
Kubernetes命令行工具,允许用户使用指令来管理k8s集群。
Install Minikube
Minikube是为了开发者能在个人电脑上运行k8s而提供的一套工具,Go语言编写,通过调用虚拟化管理程序,创建出一个运行在虚拟机内的单节点集群。
VM driver documentation
1 | minikube start --driver=<driver_name> |
👆Enter the name of the hypervisor you installed in lowercase letters where <driver_name> is mentioned below.
Driver is Docker