Linux企业运维——Kubernetes(一)k8s集群安装部署

Linux企业运维——Kubernetes(一)k8s集群安装部署

一、Kubernetes简介

1.1、什么是Kubernetes

Kubernetes (通常称为K8s,K8s是将8个字母“ubernete”替换为“8”的缩写) 是用于自动部署、扩展和管理容器化(containerized)应用程序的开源系统。它旨在提供“跨主机集群的自动部署、扩展以及运行应用程序容器的平台”。它支持一系列容器工具, 包括Docker等。
Kubernetes对计算资源进行了更高层次的抽象,通过将容器进行细致的组合,将最终的应用服务交给用户。

Kubernetes的好处

  • 隐藏资源管理和错误处理,用户仅需要关注应用的开发。
  • 服务高可用、高可靠。
  • 可将负载运行在由成千上万的机器联合而成的集群中。

1.2、Kubernetes设计架构

Kubernetes集群包含有节点代理kubelet和Master组件(APIs, scheduler, etc),一切都基于分布式的存储系统。
在这里插入图片描述
Kubernetes主要由以下几个核心组件组成:

  • etcd:保存了整个集群的状态
  • apiserver:提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制
  • controller manager:负责维护集群的状态,比如故障检测、自动扩展、滚动更新等
  • scheduler:负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上
  • kubelet:负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理
  • Container runtime:负责镜像管理以及Pod和容器的真正运行(CRI) kube-proxy:负责为Service提供cluster内部的服务发现和负载均衡

除了核心组件,还有一些推荐的Add-ons:

  • kube-dns:负责为整个集群提供DNS服务
  • Ingress Controller:为服务提供外网入口
  • Heapster:提供资源监控
  • Dashboard:提供GUI
  • Federation:提供跨可用区的集群
  • Fluentd-elasticsearch:提供集群日志采集、存储与查询

Kubernetes设计理念和功能其实就是一个类似Linux的分层架构
在这里插入图片描述

  • 核心层:Kubernetes最核心的功能,对外提供API构建高层的应用,对内提供插件式应用执行环境
  • 应用层:部署(无状态应用、有状态应用、批处理任务、集群应用等)和路由(服务发现、DNS解析等)
  • 管理层:系统度量(如基础设施、容器和网络的度量),自动化(如自动扩展、动态Provision等)以及策略管理(RBAC、Quota、PSP、NetworkPolicy等)
  • 接口层:kubectl命令行工具、客户端SDK以及集群联邦
  • 生态系统:在接口层之上的庞大容器集群管理调度的生态系统,可以划分为两个范畴—— (1)Kubernetes外部:日志、监控、配置管理、CI、CD、Workflow、FaaS、OTS应用、ChatOps等 (2)Kubernetes内部:CRI、CNI、CVI、镜像仓库、Cloud Provider、集群自身的配置和管理等

二、k8s安装部署

2.1、环境准备

关闭所有节点的selinux和iptables防火墙,所有节点部署docker引擎。
清理所有服务器之前的docker实验产物,保证实验环境崭新
在这里插入图片描述
在这里插入图片描述
server2、3、4离开swarm集群,清空machine的配置,重新加载配置文件,重新启动docker
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
删除server1和server2上的之前实验配置的网络接口
在这里插入图片描述
在这里插入图片描述
server2、3、4关闭swap分区,注释掉/etc/fstab文件里swap分区的部分
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
server2将Docker使用的Cgroup Driver改为systemd,因为systemd是Kubernetes自带的cgroup管理器, 负责为每个进程分配cgroups, 但docker的cgroup driver默认是cgroupfs,这样就同时运行有两个cgroup控制管理器, 当资源有压力的情况时,有可能出现不稳定的情况
在这里插入图片描述
在这里插入图片描述
将上一步修改好的相同的配置发送给server3和server4
在这里插入图片描述
server3和server4重新启动docker
在这里插入图片描述
在这里插入图片描述
server2中修改docker源配置文件,将enabled参数置0
在这里插入图片描述
创建k8s的源配置文件并编辑
在这里插入图片描述
将server2上的k8s.repo发送给server3和server4
在这里插入图片描述

2.2、安装部署

server2、3、4安装kubelet kubeadm kubectl
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
都启动kubelet并设置开机自启
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
真实主机将k8s的安装包发送给server1
在这里插入图片描述
server1使用docker导入该镜像
在这里插入图片描述
列出镜像列表,可以看到有7个k8s相关镜像和1个flannel镜像
在这里插入图片描述
在harbor中创建k8s项目,将k8s相关的镜像文件存放进去,设置为公开,方便匿名用户拉取
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
k8s管理端的虚拟机分配的cpu至少要为2,并提高分配的内存,所以修改一下虚拟机配置
在这里插入图片描述
在这里插入图片描述
接下来初始化k8s集群
在这里插入图片描述
现在需要配置k8s的环境变量,这里图中程序提示的命令我们直接复制下来执行
在这里插入图片描述
并在 ~/.bash_profile中添加如下配置,tab键就可以补齐调用命令
在这里插入图片描述
输入kubectl查看环境变量是否配置成功,如成功会展示出可用命令
在这里插入图片描述
输入kubectl get nodes获取节点和服务版本信息
输入kubectl get pod -n kube-system获取指定名称空间的pod信息,可以看到有两个没有就绪,这是因为没有安装flannel网络组件在这里插入图片描述
server2先安装wget,然后下载kube-flannel.yml
在这里插入图片描述
在这里插入图片描述
修改kube-flannel.yml配置文件,修改image参数
在这里插入图片描述
server1更改flannel镜像标签并将其上传至harbor仓库
在这里插入图片描述
我们可以在web管理页面看到上传的flannel镜像
在这里插入图片描述
server2现在启动flannel组件,查看pod信息,可以看到刚才的两个没有就绪的pod已经就绪了
在这里插入图片描述
在之前初始化时我们还需要保存下图选中的命令,这个命令可以让其他节点加入到server2部署好的k8s集群里
在这里插入图片描述
在server3和server4中使用该命令,加入到k8s集群中
在这里插入图片描述
在这里插入图片描述
server3和server4现在查看镜像列表,可以看到集群中的镜像,说明已经加入到了server2部署的k8s集群中
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值