kubernetes云原生纪元:kubernetes API && 容器管理平台

kubernetes云原生纪元:kubernetes API && 容器管理平台

武汉加油,中国加油

介绍apiVersion

在我们写配置文件的时候有各种各样的apiVersion 比如 apps/v1,v1, extensions/v1beta1,stroage.k8s.io/v1,rbac.authorization.k8s.io/v1…好多。

它是有规则可循的,看下面的图主要看==/api== 和==/apis==。

/api 只有api/v1,再往下是/app/v1/nodes ,/app/v1/pods,api下面都是核心api资源没有api分组的,默认核心组,核心组分两级一级是版本,二级是具体资源

/apis是非核心api,每个资源用三级来表示,比如batch,extentsions是grep,分组下面是版本v1,v1alpha1,第三级是具体的资源 jobs watch,cronjobs。跟核心资源的区分是多个一级grep,它的分组很容易理解它的来路,让资源的组织结构更加清新,版本就可以让我们知道当前API的可靠性 ,还有就是可以根据版本升级

image-20200202115128561

还有一个疑问就是我们在写一个配置的时候怎么确定当前使用的版本apiVersion呢?

官网:https://kubernetes.io/

根据下面图片引导就可以找kubernetes版本所使用的apiversion,而且下面也有档期版本的配置,我们不知道如何配置的时候可以来参考

image-20200202121205443

image-20200202121339234

比如我们看下pod 他是core 核心API,当我们定义下pod 的时候只需要在apiVersion:v1 就可以,它就能定位到我们当前的使用版本

image-20200202121549682

API Server 介绍

参考https://blog.csdn.net/bbwangj/article/details/81904421

k8s API Server提供了k8s各类资源对象(pod,RC,Service等)的增删改查及watch等HTTP Rest接口,是整个系统的数据总线和数据中心。

API 是由apiServer 来控制的,apiServer集群中枢,各种资源数据都是通过apiServer提交到后端的,持久化存储etcd,kubernetes 各个组件之间也是通过apiServer的接口来实现的解藕,包括我们使用的kukectl当他对集群操作的时候,也是通过apiServer来完成的。

kubernetes API Server的功能:

  1. 提供了集群管理的REST API接口(包括认证授权、数据校验以及集群状态变更);
  2. 提供其他模块之间的数据交互和通信的枢纽(其他模块通过API Server查询或修改数据,只有API Server才直接操作etcd);
  3. 是资源配额控制的入口;
  4. 拥有完备的集群安全机制.

apiServer对外提供访问方式是基于http的restfutApi

如何访问kubernetes API

k8s通过kube-apiserver这个进程提供服务,该进程运行在单个k8s-master节点上。默认有两个端口。

  • 本地端口
  1. 该端口用于接收HTTP请求;
  2. 该端口默认值为8080,可以通过API Server的启动参数“–insecure-port”的值来修改默认值;
  3. 默认的IP地址为“localhost”,可以通过启动参数“–insecure-bind-address”的值来修改该IP地址;
  4. 非认证或授权的HTTP请求通过该端口访问API Server。
  • 安全端口
  1. 该端口默认值为6443,可通过启动参数“–secure-port”的值来修改默认值;
  2. 默认IP地址为非本地(Non-Localhost)网络端口,通过启动参数“–bind-address”设置该值;
  3. 该端口用于接收HTTPS请求;
  4. 用于基于Tocken文件或客户端证书及HTTP Base的认证;
  5. 用于基于策略的授权;
  6. 默认不启动HTTPS安全访问控制。

kubernetes API访问方式

  1. Curl

    curl localhost:8080/api
    curl localhost:8080/api/v1/pods
    curl localhost:8080/api/v1/services
    curl localhost:8080/api/v1/replicationcontrollers
    

    比如查看 POD 信息

    curl localhost:8080/api/v1/pods
    

    返回了当前集群运行的所有POD的详细信息。

    查看所有节点的详细信息

    curl localhost:8080/api/v1/nodes
    

详细用法可以来到官网,比如POD的操作,

image-20200202124823515

容器管理平台

我们可以看到如果我们用程序调用这些接口信息也是不太理想,因复杂度比较高, 包括当升级的时候还要维护跟kuberntes交互的客户端。 我们用手动敲命令的方式也不是长久之计,kubernetes 有多种语言环境的客户端。

如果你用Java开发就选Java。用go开发就用https://github.com/kubernetes/client-go 它在kubernetes项目里面。虽然客户端很多但是功能都是大同小异的都是对api 接口的封装对外提供的都是响应语言的SDK,目的就是让我更容易的接近 kubernetes API。

https://github.com/kubernetes-client

image-20200202125708782

比如Java的,怎么使用

image-20200202130432621

image-20200202130510576

主要是看清楚这里,是否兼容我们当前服务器kubernetes版本,

image-20200202130612398

然后这个目录有很多例子

image-20200202130747110

我们可以自己做一个容器管理平台,虽然不可能像rancher功能那么全,但是肯定符合当前公司业务。

rancher是一个产品,肯定是很复杂的

如果我们自己开发可以参考下面:

image-20200202131645714

当然现在最好用容器管理平台就是😄kubespherehttps://kubesphere.com.cn/ 就是容器平台的“集大成者”

image-20200202132500460
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

醉清风_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值