目录
一、Kubernetes概述
1、Kubernetes简介&特性
学习Kubernetes前需要具备的前置知识:
1、Linux操作系统 Linux常用命令
2、Docker Docker学习
Kubernetes,简称K8s,是用8代替8个字符"ubernete"而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。
Kubernetes是一个轻便的和可扩展的开源平台,用于管理容器化应用和服务。通过Kubernetes能够进行应用的自动化部署和扩缩容。在Kubernetes中,会将组成应用的容器组合成一个逻辑单元以更易管理和发展。Kubernetes积累了作为Google生产环境运行工作负载15年的经验,并吸收了来自于社区的最佳想法和实践。
传统的应用部署方式是通过插件或脚本来安装应用。这样做的缺点是应用的运行、配置、管理、所有生存周期将与当前操作系统绑定,这样做并不利于应用的升级更新/回滚等操作,当然也可以通过创建虚拟机的方式来实现某些功能,但是虚拟机非常重,并不利于可移植性。
新的方式是通过部署容器方式实现,每个容器之间互相隔离,每个容器有自己的文件系统,容器之间进程不会互相影响,能区分计算资源。相对于虚拟机,容器能快速部署,由于容器与底层设施、机器文件系统解耦的,所以它能在不同云,不同版本操作系统间进行迁移。
Kubernetes 是Google 开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。
在Kubernetes中,我们可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理、发现、访问,而这些细节都不需要运维人员去进行复杂的手工配置和处理。
总结:
1、K8S是Google在2014年开源的容器化集群管理系统
2、使用K8S进行容器化应用部署
3、使用K8S利于应用的扩展
4、K8S目标:让部署容器化应用更加简洁和高效
K8S特性:
1、自动装箱
2、自我修复
3、水平扩展(双十一,双十二)
4、服务发现
5、滚动更新
6、版本回退
7、密钥和配置管理
8、存储编排
9、批处理
2、K8s架构组件
Master(主控节点)和node(工作节点)
(1)、Master组件:做管理工作
API server:集群统一入口,以restful方式,交给etcd存储
Scheduler:节点调度,选择node节点应用部署
Controller-manager:处理集群中常规后台任务,一个资源对应一个控制器。做资源的控制。
etcd:存储系统,用于保存集群相关的数据。
(2)、node组件
kubelet:master派到node节点的代表,管理本机容器。
kube-proxy:提供网络代理,负载均衡等操作。
如下图
3、K8s核心概念
(1)、Pod:特点:最小部署单元。一组容器的集合。共享网络。生命周期是短暂的。
(2)、Controller:特点:确保预期的pod副本数量。无状态应用部署/有状态应用部署。确保所有的node运行同一个pod。一次性任务和定时任务。
(3)、Service:特点:定义一组pod的访问规则。
二、从零开始搭建k8s集群
搭建K8S环境简介
(1)、搭建K8S环境平台规划
单Master集群:缺点:master出故障导致整个环境不可用
多Master集群
(2)、服务器硬件配置要求
测试环境(最低要求):
master:2核 4G内存 20G硬盘
node:4核 8G内存 40G硬盘
生产环境(最低要求):
master:8核 16G内存 100G硬盘
node:16核 64G内存 500G硬盘
(3)、搭建K8S集群部署方式
K8S集群搭建主要有两种方式:1.kubeadm 2.二进制包
1、基于客户端工具kubeadm搭建
kubeadm是官方社区推出的一个快速部署K8s集群的工具,提供kubeadm init 和 kubeadm join,用于快速部署Kubernetes集群。
2、基于二进制包方式搭建
从github下载发行版的二进制包,手动部署每个组件,组成Kubernetes集群。
Kubeadm降低部署门槛,但屏蔽了很多细节,遇到问题很难排查。如果想更容易可控,推荐使用二进制包部署Kubernetes集群,虽然手动部署麻烦点,期间可以学习很多工作原理,也利于后期维护。
干我们这行,啥时候懈怠,就意味着长进的停止,长进的停止就意味着被淘汰,只能往前冲,直到凤凰涅槃的一天!