之前对 k8s 并没有很深入的了解, 最近想把手头一个项目全部放到 k8s 上, 以方便部署, 需要研究. 这里记录一下自己研究过程中头脑中的理解.
k8s 和 docker
首先, 需要先理解下 docker. 镜像把你要的应用和环境打包在一个容器里面, 有了容器之后, 部署, 扩容等操作就很方便了. 但是, 随着微服务化, 服务一多, 容器就多了, 多了之后, 就需要对容器进行管理. 需要有一套很完善的管理系统. 那么 k8s 就出现了.
k8s 全称就是 kubernets, 和 i10n 的名字类似, 中间的数字就是英文单词的数字. 它的官网是 k8s 官网 https://kubernetes.io/ .
在 k8s 机器上同时应该安装 docker-server, 因为 k8s 的基础是 docker 镜像, 这些镜像需要通过 docker-server 来从远端获取和实例化.
k8s 就是一个分布式系统, 你可以在一台机器上安装 k8s 集群, 也可以在多台机器上安装 k8s 集群. 它是 master-node 形式的有一个 k8s 节点充当 master, 其他 k8s 节点充当 node. 这整个分布式系统, 就相当于一个服务集群. 我们可以在这个集群上启动多个服务, 每个服务都有自己的虚拟 IP, 虚拟端口, 各个服务可以通过这些 IP 和端口进行交互, 最终由一个出口 IP 和出口端口对外提供服务.
k8s API
k8s 是分布式系统, 它本身有各个组件, 各个组件之间的通信, 对外提供的都是 REST 接口的 http 服务. 这些接口就统称为 k8s API.k8s 的 API 也很有特点, 首先它是分组的, 它有很多 API 组. 这些 API 组都有不同的功能, 有的 API 组负责权限, 有的 API 组负责存储.
每个 API 组还有版本的区分, 它其实也有大小版本区分, 但是不是我们常用的 1.1.1 这种版本号, k8s API 大的版本都是以 v1, v2 这种为迭代的, 每个大的版本里面区别三个等级, 一种是 Alpha 等级, 这个等级就是还在调试的, 基本我们不作为开发者的话, 这种等级的接口版本不会接触到. 它会在大版本后面直接跟着 alpha, 比如 v1alpha2, 就代表是 v1 大版本的 alpha 等级第 2 小版本. 第二个等级就是 Beta 等级, 这个等级说明接口基本可以使用了, 也经过完整测试了. 会比正常的稳定版本有更多的功能. 它的版本格式如 v1beta2. 第三个等级就是 Stable 版本, 这个等级说明这个是个稳定版, 可以放心使用.
所以, 我们通过 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.
来源: https://www.cnblogs.com/yjf512/p/11174335.html