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

你可能感兴趣的文章
Python3导入自定义模块的3种方式
查看>>
python3打开txt文件_使用Python 3从文本文件读取句子并添加到列表中
查看>>
python3爬虫抓取智联招聘职位信息代码
查看>>
Python3爬虫数据入数据库---把爬取到的数据存到数据库,带数据库去重功能
查看>>
python3的 pymysql把mysqldb库取代了,让python 3支持mysqldb的解决方法
查看>>
Python3笔记——IDE的选择
查看>>
python3简单使用requests 用户代理,cookie池
查看>>
Python3组播通信编程实现教程(发送者+接收者)
查看>>
Python3编写网络爬虫10-数据存储方式三-CSV文件存储
查看>>
python3读取redis返回数据带有'b'的问题
查看>>
Python3连接MySQL
查看>>
Python关于isinstance函数的解析 | 附Demo(全)
查看>>
Python3:setup.py:完成所有任务的PIP安装(Build_ext+Install)
查看>>
python4.0 gil_Python 并发编程系列--1、浅谈GIL历史及对多线程的影响
查看>>
python60行绘图程序_天底下最简单的QT画图板,就一个类,60行代码
查看>>
Python: AES加密与解密
查看>>
Python: Range() 最大尺寸;动态的还是静态的?
查看>>
Python: Windows下用 multiprocessing 的深坑
查看>>
python:Could not find platform independent libraries <prefix>解决方法
查看>>
Python:datetime tzinfo 时区名称文档
查看>>