一、Kubernetes简介

1.k8s简介

  • 在Docker 作为高级容器引擎快速发展的同时,在Google内部,容器技术已经应用了很多年,Borg系统运行管理着成千上万的容器应用。

  • Kubernetes项目来源于Borg,可以说是集结了Borg设计思想的精华,并且吸收了Borg系统中的经验和教训。

  • Kubernetes对计算资源进行了更高层次的抽象,通过将容器进行细致的组合,将最终的应用服务交给用户。

Kubernetes的好处

  • 隐藏资源管理和错误处理,用户仅需要关注应用的开发。

  • 服务高可用、高可靠。

  • 可将负载运行在由成千上万的机器联合而成的集群中。

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以及集群联邦

生态系统:在接口层之上的庞大容器集群管理调度的生态系统,可以划分为两个范畴

  • Kubernetes外部:日志、监控、配置管理、CI、CD、Workflow、FaaS、OTS应用、ChatOps等
  • Kubernetes内部:CRI、CNI、CVI、镜像仓库、Cloud Provider、集群自身的配置和管理等

二、Kubernetes部署

安装环境
四台rhel7.6版本虚拟机,火墙和selinux关闭。
server1:负责harbor容器仓库配置;
server2:负责k8s master节点(cpu为2,mem为2048);
server3:k8s node节点;
server4:k8s node节点;
所有k8s服务器均要能上网。

1.环境清理

删除景象(Server2,3,4相同的操作)
在这里插入图片描述在这里插入图片描述
删除服务(Server2,3,4相同的操作)
在这里插入图片描述
Server2离开swarm集群
在这里插入图片描述
删除不用的网络(Server2,3,4相同的操作)

在这里插入图片描述
删除不用的容器(Server2,3,4相同的操作)
在这里插入图片描述
删除不用的容器(Server2,3,4相同的操作)
在这里插入图片描述
删除文件,重启服务(Server2,3,4相同的操作)
在这里插入图片描述在这里插入图片描述
删除不用的数据卷(Server2,3,4相同的操作)
在这里插入图片描述

2.k8s引擎配置

k8s部署中需要禁用swap分区,注释掉/etc/fstab分区的定义(Server2,3,4相同的操作)
在这里插入图片描述在这里插入图片描述
设定docker cgroup driver:systemd(Server2,3,4相同的操作)
在这里插入图片描述
在这里插入图片描述
重启docker服务,开机自启动(Server2,3,4相同的操作)
在这里插入图片描述
docker info查看(Server2,3,4相同的操作)
在这里插入图片描述
免密认证(Server2,与server3和server4)
在这里插入图片描述

3.配置k8s的仓库文件并下载软件

编写k8s安装软件仓库文件(Server2,3,4相同的操作)
在这里插入图片描述
在这里插入图片描述
列出仓库
在这里插入图片描述
安装kubelet,kubectl,kubeadm, 设置kubelet服务开机自启(Server2,3,4相同的操作)
在这里插入图片描述

4.本地拉取景象(8个),上传至仓库

在这里插入图片描述在这里插入图片描述
server1上查看拉取的镜像
在这里插入图片描述
创建k8s仓库
在这里插入图片描述
在这里插入图片描述

上传7个景象到k8s的项目

在这里插入图片描述
在这里插入图片描述
k8s的项目中查看景象
在这里插入图片描述

5.初始化k8s集群

在这里插入图片描述
在k8s的节点上执行这条命令,即可将节点加入集群
在这里插入图片描述
初始化后,提示操作,此处的操作需要复制粘贴保存起来,方便后续使用。
这里我们时root用户,所以选择按照提示配置环境变量。
在这里插入图片描述
在这里插入图片描述
配置好环境变量后注销登陆,命令行输入kubectl 然后tab,出现如下情况则证明配置已完成,两个节点未启动
在这里插入图片描述

6. 安装flannel组件

使用用flannel网络组件完善集群,将镜像上传harbor仓库,放在library项目中(不加library也是默认)

由于更换电脑,此处的仓库由org.westos.org变更为hyl.westos.org

在这里插入图片描述
在这里插入图片描述
下载 kube-flannel.yml文件, 修改image路径为仓库路径
在这里插入图片描述

启动flannel组件
在这里插入图片描述
查看节点情况,所有节点均running

在这里插入图片描述

7.将其他节点加入k8s集群

server3、4:
将本机添加到部署好的server2集群中,此处命令为之前保存的初始化命令。
在这里插入图片描述
在这里插入图片描述
server2中查看节点,server3、server4已经加入集群。
在这里插入图片描述
在这里插入图片描述

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐