博客
关于我
CentOS7中使用kubeadm快速部署一套K8S集群
阅读量:221 次
发布时间:2019-02-28

本文共 2317 字,大约阅读时间需要 7 分钟。

Kubernetes概述与快速部署实践

Kubernetes是什么

Kubernetes(简称K8S)是Google于2014年开源的容器集群管理系统,简称K8S。它专注于容器化应用程序的部署、扩展和管理,为开发者提供了高效的容器编排和资源调度能力。K8S通过自我修复、弹性伸缩、自动部署和回滚、服务发现等核心功能,显著提升了应用程序的高可用性和易用性。

Kubernetes特性

自我修复

在节点故障时,Kubernetes能够自动重新启动失败的容器,确保预期的副本数量。同时,健康检查失败的容器会被杀死,以避免中断在线服务。

弹性伸缩

Kubernetes可以根据CPU使用情况自动扩容和缩容,确保高峰期的并发处理能力,同时在低峰期回收资源,降低运维成本。

自动部署和回滚

通过滚动更新策略,Kubernetes可以一次更新一个Pod,避免同时删除所有Pod的风险。如果更新失败,系统会回滚更改,保障业务连续性。

服务发现和负载均衡

Kubernetes为多个容器提供了统一的访问入口(包括内部IP地址和DNS名称),并通过负载均衡关联所有容器,使得用户无需关心容器IP地址。

机密和配置管理

Kubernetes支持在集群内管理机密数据和应用程序配置,避免敏感数据暴露在镜像中,提升数据安全性。

存储编排

Kubernetes支持将外部存储(如本地存储、公有云存储或网络存储)作为集群资源的一部分,提供高度灵活的存储管理。

批处理

Kubernetes提供一次性任务和定时任务功能,适用于批量数据处理和分析场景。

Kubernetes集群架构与组件

Master组件

  • kube-apiserver:Kubernetes的统一入口,通过RESTful API提供操作接口,处理所有对象资源的增删改查和监听。
  • kube-controller-manager:负责后台任务管理,每个资源对应一个控制器,ControllerManager协调这些控制器。
  • kube-scheduler:根据调度算法为新Pod选择Node节点,支持同一节点部署或分布式部署。
  • etcd:分布式键值存储系统,保存集群状态数据,如Pod和Service信息。

Node组件

  • kubelet:Master节点在每个Node上运行的Agent,管理容器生命周期,包括Pod的创建和挂载数据卷。
  • kube-proxy:在Node节点上实现Pod网络代理,维护网络规则和四层负载均衡。
  • docker/rocket:容器引擎,运行容器。

Kubernetes核心概念

Pod

Pod是Kubernetes的最小部署单元,一组容器的集合。Pod内的容器共享网络命名空间,Pod通常是短暂的,用于运行应用程序。

Controllers

  • ReplicaSet:确保预期的Pod副本数量。
  • Deployment:无状态应用部署。
  • StatefulSet:有状态应用部署。
  • DaemonSet:确保所有Node运行同一个Pod。
  • Job:一次性任务。
  • Cronjob:定时任务。

更高级层次对象

  • Service:定义Pod的访问策略,防止Pod失联。
  • Label:标签,用于关联对象、查询和筛选。
  • Namespace:逻辑隔离资源,避免命名冲突。
  • Annotations:注释,补充资源信息。

Kubeadm快速部署K8S集群

官方部署方式

Kubeadm是Kubernetes官方提供的快速部署工具,支持通过kubeadm initkubeadm join完成集群部署。

环境准备

  • 硬件需求:CPU≥2核,内存≥2GB。
  • 操作系统:CentOS 7.4+。

节点角色

  • Master节点:部署apiserver、controller-manager、scheduler等组件。
  • Worker节点:运行kubelet、kube-proxy等组件。

环境初始化

  • 关闭防火墙和SELINUX。
  • 关闭swap分区。
  • 设置主机名和hosts文件。
  • 内核调整,启用iptables链。
  • 同时设置时区并同步时间。

Docker安装

使用阿里云镜像源安装Docker,确保镜像拉取顺利完成。

软件源配置

添加Kubernetes YUM软件源,确保组件按版本安装。

组件安装

安装kubeadm、kubelet和kubectl组件,确保版本一致。

部署Kubernetes Master节点

在Master节点执行kubeadm init,指定镜像仓库和网络参数。初始化完成后,用户需配置kubeconfig文件,确保token有效期。

节点加入集群

在Worker节点执行kubeadm join,使用Master节点的API地址和token信息完成注册。确保所有节点状态为Ready,集群正常运行。

网络插件部署

在Master节点部署网络插件(如Flannel),确保Pod网络功能正常。通过kubectl命令验证网络状态,确保所有节点网络连接正常。

测试Kubernetes集群

创建一个Pod并暴露端口,验证访问是否正常。例如,创建一个NginxPod并使用NodePort服务类型,测试访问地址。

部署Dashboard

部署Kubernetes Dashboard,访问NodeIP:30001查看集群状态。创建service account并绑定管理员权限,确保有权限访问集群资源。

常见问题解决

  • 生成新的token以延长有效期。
  • 处理证书相关问题,确保Dashboard访问无误。

通过以上步骤,用户可以快速部署并测试一个Kubernetes集群,熟悉其核心功能和操作流程。

转载地址:http://ebti.baihongyu.com/

你可能感兴趣的文章
multi_index_container
查看>>
MySQL DBA 进阶知识详解
查看>>
Mura CMS processAsyncObject SQL注入漏洞复现(CVE-2024-32640)
查看>>
Mysql DBA 高级运维学习之路-DQL语句之select知识讲解
查看>>
mysql deadlock found when trying to get lock暴力解决
查看>>
MuseTalk如何生成高质量视频(使用技巧)
查看>>
mutiplemap 总结
查看>>
MySQL DELETE 表别名问题
查看>>
MySQL Error Handling in Stored Procedures---转载
查看>>
MVC 区域功能
查看>>
MySQL FEDERATED 提示
查看>>
mysql generic安装_MySQL 5.6 Generic Binary安装与配置_MySQL
查看>>
Mysql group by
查看>>
MySQL I 有福啦,窗口函数大大提高了取数的效率!
查看>>
mysql id自动增长 初始值 Mysql重置auto_increment初始值
查看>>
MySQL in 太多过慢的 3 种解决方案
查看>>
MySQL InnoDB 三大文件日志,看完秒懂
查看>>
Mysql InnoDB 数据更新导致锁表
查看>>
Mysql Innodb 锁机制
查看>>
MySQL InnoDB中意向锁的作用及原理探
查看>>