一、Kube-ApiServer简介
Kube-ApiServer是etcd的唯一访问和操作入口,ApiServer对外和对内都提供了一套统一的REST API,用户可以通过kubeclt命令请求ApiServer进行操作,而Kubernetes内部组件都是通过一种watch机制去监控API Server中的资源变化,然后对其做一些相应的操作。
二、Kube-ApiServer作用
1、提供了集群管理的REST API接口(包括认证授权、数据校验以及集群状态变更);
2、提供其他模块之间的数据交互和通信的枢纽(其他模块通过API Server查询或修改数据,只有API Server才直接操作etcd);
3、是资源配额控制的入口;
4、拥有完备的集群安全机制.
三、Kube-ApiServer操作
# 查询api支持的版本
kubectl api-versions
# admissionregistration.k8s.io/v1
# admissionregistration.k8s.io/v1beta1
# apiextensions.k8s.io/v1
# apiextensions.k8s.io/v1beta1
# apiregistration.k8s.io/v1
# apiregistration.k8s.io/v1beta1
# apps/v1
# authentication.k8s.io/v1
# authentication.k8s.io/v1beta1
# authorization.k8s.io/v1
# authorization.k8s.io/v1beta1
# autoscaling/v1
# autoscaling/v2beta1
# autoscaling/v2beta2
# batch/v1
# batch/v1beta1
# certificates.k8s.io/v1beta1
# coordination.k8s.io/v1
# coordination.k8s.io/v1beta1
# events.k8s.io/v1beta1
# extensions/v1beta1
# networking.k8s.io/v1
# networking.k8s.io/v1beta1
# node.k8s.io/v1beta1
# policy/v1beta1
# rbac.authorization.k8s.io/v1
# rbac.authorization.k8s.io/v1beta1
# scheduling.k8s.io/v1
# scheduling.k8s.io/v1beta1
# storage.k8s.io/v1
# storage.k8s.io/v1beta1
# v1
# 查看具体某个资源对象
kubectl api-resources --api-group=<resource-name>
四、Kube-ApiServer工作原理
五、如何访问kubernetes API
k8s通过kube-apiserver这个进程提供服务,该进程运行在单个k8s-master节点上。默认有两个端口。
1、本地端口
- 该端口用于接收HTTP请求;
- 该端口默认值为8080,可以通过API Server的启动参数“–insecure-port”的值来修改默认值;
- 默认的IP地址为“localhost”,可以通过启动参数“–insecure-bind-address”的值来修改该IP地址;
- 非认证或授权的HTTP请求通过该端口访问API Server。
2、安全端口
- 该端口默认值为6443,可通过启动参数“–secure-port”的值来修改默认值;
- 默认IP地址为非本地(Non-Localhost)网络端口,通过启动参数“–bind-address”设置该值;
- 该端口用于接收HTTPS请求;
- 用于基于Tocken文件或客户端证书及HTTP Base的认证;
- 用于基于策略的授权; <