目录
前言
本文介绍K8s的相关概念,初步了解K8s,对它的组件相关概念能理解透彻。
一、Kubernetes
1、为什么要有K8s
在看这段文字之前,我们要首先知道一个东西,那就是docker。
这里再简单的说下:
docker是容器技术的一种实现方案,同时docker也是docker公司的一个产品。目前主流的容器技术是以docker技术为标准之上的。使用docker可以无需考虑环境问题,docker可以一次构建,到处运行。
如果有很多容器需要管理,单纯使用docker命令来手动管理容器就会显得非常的麻烦,并且容易出错。docker公司提供了docker-compose和内置docker中的docker-swarm来编排服务。使用docker公司提供的编排工具对于中小项目实际上已经足够,但是对于大型分布式应用而言,仅仅对容器编排是不够的。我们需要更强大的功能来管理容器,并且除了docker这个容器实现技术之外的其他容器也是需要编排管理。这是基于docker自身提供的工具就有些力不从心了,而我们又不想自己动手开发。有没有其他容器编排工具呢?肯定有的,容器编排的工具有很多,这里面也有一些公司的开源与兴衰,以及编排容器的工具更迭,好多人都想做那个独角兽,那么选择哪个作为我们使用的工具呢?这里就说这么一个,那就是Kubernetes(K8S)了。
那为什么说这个而不用其他的呢?
这里说以下几点:
开源,背后有谷歌基金会支持;
社区活跃,中英文都有;
成熟。
PS:K8s中文社区 https://www.kubernetes.org.cn/
2、什么是K8s
k8s是 Kubernetes的简称,是一个编排容器的工具,也是管理应用的全生命周期的一个工具。
不论是从应用的创建,应用的部署,应用提供服务,扩容缩容应用,还是应用更新,都非常的方便,而且可以做到故障自愈,例如一个服务器挂了,可以自动将这个服务器上的服务调度到另外一个主机上进行运行,无需进行人工干涉。
3、K8s的用途
- 存储系统挂载
- Distributing secrets
- 应用健康检测
- 应用实例的复制
- Pod自动伸缩/扩展
- Naming and discovering
- 负载均衡
- 滚动更新
- 资源监控
- 日志访问
- 调度应用程序
- 提供认证和授权
4、K8s优势和特点
4.1 K8s优势
自动装箱,水平扩展,自我修复
服务发现和负载均衡
自动发布和回滚
集中化配置管理和密钥管理
存储编排
批处理:提供一次性任务,定时任务;满足批量数据处理和分析的场景
4.2 K8s特点
可移植:支持公有云,私有云,混合云,多重云(multi-cloud)
可扩展:可根据业务流量情况快速扩展kubernetes集群的节点数量。
自愈:自动发布,自动重启,自动复制,自动扩展
进程协同:利用复合应用保证应用和容器一对一的模型。
二、K8s架构
集群架构图
一个简单架构图,不含dashboard,只有一个master和两个node
三、K8s组件简介
1、master组件
1.1 kube-apiserver
功能:
1)提供了集群管理的REST API接口(包括认证授权、数据校验以及集群状态变更);
2)提供其他模块之间的数据交互和通信的枢纽(其他模块通过API Server查询或修改数据,只有API Server才直接操作etcd);
3)是资源配额控制的入口;
如何访问apiserver
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安全访问控制。
访问apiserver的方式
curl :
curl localhost:8080/api
curl localhost:8080/api/v1/pods
curl localhost:8080/api/v1/services
curl localhost:8080/api/v1/replicationcontrollers
kubectl proxy
Kubectl Proxy代理程序既能作为API Server的反向代理,也能作为普通客户端访问API Server的代理。通过master节点的8080端口来启动该代理程序。
kubectl客户端
命令行工具kubectl客户端,通过命令行参数转换为对API Server的REST API调用,并将调用结果输出。
apiserver参数介绍
参数 | 含义 | 默认值 |