【LinuxSRE工程师培训】kubernetes集群部署!
老男孩IT教育
技术博客
2022年8月29日 16:44
Kubernetes是Google 2014年创建管理的,是Google 10多年大规模容器管理技术Borg的开源版本。它是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。
Kubernetes是Google 2014年创建管理的,是Google 10多年大规模容器管理技术Borg的开源版本。它是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。
通过Kubernetes你可以:
- 快速部署应用
- 快速扩展应用
- 无缝对接新的应用功能
- 节省资源,优化硬件资源的使用
Kubernetes 特点:
- 可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)
- 可扩展: 模块化, 插件化, 可挂载, 可组合
- 自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展
k8s有什么功能
| 自动化上线和回滚
- Kubernetes会分步骤地将针对应用或其配置的更改上线,同时监视应用程序运行状况确保你不会同时终止所有实例
- 如果出现问题,Kubernetes 会为你回滚所作更改。你应该充分利用不断成长的部署方案生态系统
| 服务发现与负载均衡
- 无需修改你的应用程序即可使用陌生的服务发现机制
- Kubernetes为容器提供了自己的IP地址和一个DNS名称,并且可以在它们之间实现负载均衡
| 存储编排
- 自动挂载所选存储系统,包括本地存储、诸如GCP或AWS之类公有云提供商所提供的存储
- 或者诸如NFS、iSCSI、Gluster、Ceph、Cinder 或 Flocker 这类网络存储系统
| Secret和配置管理
- 部署和更新Secrets和应用程序的配置而不必重新构建容器镜像,且不必将软件堆栈配置中的秘密信息暴露出来
| 自动装箱
- 根据资源需求和其他约束自动放置容器,同时避免影响可用性
- 将关键性工作负载和尽力而为性质的服务工作负载进行混合放置,以提高资源利用率并节省更多资源
| 批量执行
- 除了服务之外,Kubernetes 还可以管理你的批处理和 CI 工作负载,在期望时替换掉失效的容器
| IPv4/IPv6 双协议栈
- 为Pod和Service分配IPv4和IPv6地址
| 水平扩缩
- 使用一个简单的命令、一个UI或基于CPU使用情况自动对应用程序进行扩缩
| 自我修复
- 重新启动失败的容器,在节点死亡时替换并重新调度容器,杀死不响应用户定义的健康检查的容器
- 并且在它们准备好服务之前不会将它们公布给客户端
| 为扩展性设计
- 无需更改上游源码即可扩展你的 Kubernetes 集群
kubernetes 集群架构图
kubernetes 组件
| Control Plane组成部分
Scheduler:
- kube-scheduler根据调度算法为新创建的Pod选择一个Node节点,可以任意部署,可以部署在同一个节点上,也可以部署在不同的节点上
Controller Manager:
- Kube-controller-manager,处理集群中常规后台任务,一个资源对应一个控制器,而ControllerManager就是负责管理这些控制器的
Cloud Controller Manager:
- 用在云平台上的Kube-controller-manager组件
- 如果我们直接在物理机上部署的话,可以不使用该组件
API Server:
- kube-apiserver,集群的统一入口,各组件协调者,以RESTFUL API提供接口服务
- 所有对象资源的增删改查和监听操作都交给APIServer处理后再提交给etcd存储
Etcd:
- 分布式键值存储系统,用于保存集群状态元数据信息,比如Pod,Service等对象信息
- 这个数据库是可以单独拿出来部署,只需要API server可以连接到该分布式数据库集群即可
| Node组成部分
kubelet:
- 可以理解为Master在工作节点上的Agent,管理本机运行容器的生命周期
- 比如创建容器,Pod挂载数据卷,下载secret,获取容器的节点状态等工作
- kubelet将每一个Pod转换成一组容器
kube-proxy:
- 在工作节点上实现Pod网络代理,维护网络规则和四层负载均衡工作
- 换句话说,就是用于负责Pod网络路由,用于对外提供访问的实现
- 可以找到你关心的项目所在的pod节点
POD:
- 用户划分容器的最小单位,一个POD可以存在多个容器
docker/rocket(rkt,已停止支持):
- 容器引擎,用于运行容器
| 附加组件(Add-ons)
除了上面提到的核心组件,还有一些推荐的附加组件(Add-ons)
- kube-dns: 负责为整个集群提供DNS服务
- Ingress Controller: 为服务提供外网入口
- Heapster: 提供资源监控
- Dashboard: 提供GUI
- Federation: 提供跨可用区的集群
- Fluentd-elasticsearch: 提供集群日志采集、存储与查询
由于内容篇幅过长,分两篇文章进行发布,其余内容见链接:kubernetes集群部署(二)!Linux运维培训班
为了让学员学以致用,老男孩教育不断更新Linux培训教学大纲,与一众讲师精心打造Linux云计算SRE课程体系。老男孩教育Linux云计算SRE运维课程,从零基础开始授课,适合零基础且对Linux感兴趣的学员学习。课程的主要目的就是培养出专业的Linux系统工程师,名师授课全程面授教学,边讲边练帮助学员高效掌握Linux技术。
