文章目录
Kubernetes
简介
-
在Docker 作为高级容器引擎快速发展的同时,在Google内部,容器技术已经应用了很多年,Borg系统运行管理着成千上万的容器应用。
-
Kubernetes项目来源于Borg,可以说是集结了Borg设计思想的精华,并且吸收了Borg系统中的经验和教训。
-
Kubernetes对计算资源进行了更高层次的抽象,通过将容器进行细致的组合,将最终的应用服务交给用户。
-
Kubernetes的好处:
1.隐藏资源管理和错误处理,用户仅需要关注应用的开发
2.服务高可用、高可靠。
3.可将负载运行在由成千上万的机器联合而成的集群中。
设计架构
Kubernetes集群包含有节点代理kubelet和Master组件(APIs, scheduler, etc),一切都基于分布式的存储系统。
-
Kubernetes主要由以下几个核心组件组成:
etcd:保存了整个集群的状态
apiserver:提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制
controller manager:负责维护集群的状态,比如故障检测、自动扩展、滚动更新等
scheduler:负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上
kubelet:负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理
Container runtime:负责镜像管理以及Pod和容器的真正运行(CRI)
kube-proxy:负责为Service提供cluster内部的服务发现和负载均衡 -
除了核心组件,还有一些推荐的Add-ons:
kube-dns:负责为整个集群提供DNS服务
Ingress Controller:为服务提供外网入口
Heapster:提供资源监控
Dashboard:提供GUI
Federation:提供跨可用区的集群
Fluentd-elasticsearch:提供集群日志采集、存储与查询
Kubernetes设计理念和功能其实就是一个类似Linux的分层架构
- 核心层:Kubernetes最核心的功能,对外提供API构建高层的应用,对内提供插件
式应用执行环境 - 应用层:部署(无状态应用、有状态应用、批处理任务、集群应用等)和路由(服务发现、DNS解析等)
- 管理层:系统度量(如基础设施、容器和网络的度量),自动化(如自动扩展、动
态Provision等)以及策略管理(RBAC、Quota、PSP、NetworkPolicy等) - 接口层:kubectl命令行工具、客户端SDK以及集群联邦
- 生态系统:在接口层之上的庞大容器集群管理调度的生态系统,可以划分为两个范
畴
Kubernetes外部:日志、监控、配置管理、CI、CD、Workflow、FaaS、OTS应用、ChatOps等
Kubernetes内部:CRI、CNI、CVI、镜像仓库、Cloud Provider、集群自身
的配置和管理等Kubernetes部
Kubernetes部署
参考官方文档:https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/
实验环境:
server1(做为maste):172.25.1.1 ,4G运行内存,2个CPU
server2:172.25.1.2, 2G运行内存,2个CPU
server3:172.25.1.3 ,2G运行内存,2个CPU
harbor仓库:172.25.1.11
1.在server1/2/3上安装docker引擎
yum insatll -y containerd.io-1.2.13-3.2.el7.x86_64.rpm container-selinux-2.77-1.el7.noarch.rpm docker-ce-19.03.11-3.el7.x86_64.rpm docker-ce-cli-19.03.11-3.el7.x86_64.rpm
安装docker
vim /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
sysctl --system
systemctl daemon-reload重载配置
vim /etc/docker/daemon.json所有的节点都需要修改
{
"exec-opts": [