博客
关于我
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 init和kubeadm 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/

你可能感兴趣的文章
Python制作简单的学生成绩管理系统
查看>>
python制作甘特图的基本知识(附Demo)
查看>>
python制作一个简单的服务器,【Python】 做一个简单的 http 服务器
查看>>
Python到底能做什么?它的优点在哪?
查看>>
python利用pytorch库导出图像分割算子
查看>>
python利用pyshark监听网卡来抓包其中pyshark中摸索的一些可用参数
查看>>
python利用excel分析过杀漏失
查看>>
python判断汉字数目
查看>>
python判断文件是空的,如果是空的,就删除
查看>>
python判断密码是否正确_python密码判断是否符合要求的方法
查看>>
python判断字符串包含中文_Python 判断字符串是否包含中文
查看>>
python删除第一行_Python 乱码指北:一行删掉根目录
查看>>
Python删除列表元素的三种方法
查看>>
python初步学习-python数据类型-集合(set)
查看>>
python列表生成字典_Python中将字典转换为列表的方法
查看>>
python列表对应元素合并为列表及判断一个列表是几维
查看>>
python列表去重复后按照顺序_从包含不可共元素的Python列表中删除重复元素,同时保留顺序?...
查看>>
python列表前几个_python之列表
查看>>
python列表元组
查看>>
Python列表/元组/字典和集合使用
查看>>