以前对k8s并无很深刻的了解,最近想把手头一个项目所有放到k8s上,以方便部署,须要研究。这里记录一下本身研究过程当中头脑中的理解。node
首先,须要先理解下docker。镜像把你要的应用和环境打包在一个容器里面,有了容器以后,部署,扩容等操做就很方便了。可是,随着微服务化,服务一多,容器就多了,多了以后,就须要对容器进行管理。须要有一套很完善的管理系统。那么 k8s 就出现了。git
k8s 全称就是kubernets,和 i10n 的名字相似,中间的数字就是英文单词的数字。它的官网是k8s官网。github
在 k8s 机器上同时应该安装docker-server,由于k8s的基础是docker镜像,这些镜像须要经过docker-server来从远端获取和实例化。docker
k8s 就是一个分布式系统,你能够在一台机器上安装k8s集群,也能够在多台机器上安装k8s 集群。它是master-node形式的有一个k8s节点充当master,其余k8s节点充当node。这整个分布式系统,就至关于一个服务集群。咱们能够在这个集群上启动多个服务,每一个服务都有本身的虚拟IP,虚拟端口,各个服务能够经过这些IP和端口进行交互,最终由一个出口IP和出口端口对外提供服务。json
k8s是分布式系统,它自己有各个组件,各个组件之间的通讯,对外提供的都是rest接口的http服务。这些接口就统称为 k8s API。k8s的api也颇有特色,首先它是分组的,它有不少api组。这些api组都有不一样的功能,有的api组负责权限,有的api组负责存储。api
每一个api组还有版本的区分,它其实也有大小版本区分,可是不是咱们经常使用的1.1.1这种版本号,k8s api 大的版本都是以v1, v2 这种为迭代的,每一个大的版本里面区别三个等级,一种是Alpha等级,这个等级就是还在调试的,基本咱们不做为开发者的话,这种等级的接口版本不会接触到。它会在大版本后面直接跟着alpha,好比v1alpha2, 就表明是v1大版本的alpha等级第2小版本。第二个等级就是Beta等级,这个等级说明接口基本可使用了,也通过完整测试了。会比正常的稳定版本有更多的功能。它的版本格式如v1beta2。第三个等级就是Stable版本,这个等级说明这个是个稳定版,能够放心使用。app
因此,咱们经过 kubectl api-versions
能够看到不少api组和版本号:分布式
admissionregistration.k8s.io/v1beta1 apiextensions.k8s.io/v1beta1 apiregistration.k8s.io/v1 apiregistration.k8s.io/v1beta1 apps/v1 apps/v1beta1 apps/v1beta2 authentication.k8s.io/v1 authentication.k8s.io/v1beta1 authorization.k8s.io/v1 authorization.k8s.io/v1beta1 autoscaling/v1 autoscaling/v2beta1 batch/v1 batch/v1beta1 certificates.k8s.io/v1beta1 compose.docker.com/v1beta1 compose.docker.com/v1beta2 events.k8s.io/v1beta1 extensions/v1beta1 networking.k8s.io/v1 policy/v1beta1 rbac.authorization.k8s.io/v1 rbac.authorization.k8s.io/v1beta1 storage.k8s.io/v1 storage.k8s.io/v1beta1 v1
好比 authorization.k8s.io/v1beta1
就表明authorization.k8s.io这个api组的v1大版本下的beta等级1小版本。微服务
咱们后续在yaml中写的apiVerison就是这个版本意思。学习
那这些版本的api怎么调用呢?官方使用swagger对接口进行管理和说明,首先咱们能够启动kubectl proxy
来启动k8s server的http代理。默认打开地址是http://127.0.0.1:8001/
。使用http://127.0.0.1:8001/swagger.json
就能够看到k8s的所有api说明了。若是你有swagger-editor的话,你还能够把这个json放到editor里面,就能看到全部的接口了。(接口特别多,加载比较慢)
。
如今有了k8s接口,咱们彻底能够本身写一个客户端来调用。客户端库。可是咱们最经常使用的客户端命令是kubectl。