kubernetesk8s简介及其集群安装部署

Posted S4061222

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kubernetesk8s简介及其集群安装部署相关的知识,希望对你有一定的参考价值。

一、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已经加入集群。

以上是关于kubernetesk8s简介及其集群安装部署的主要内容,如果未能解决你的问题,请参考以下文章

云原生 Kubernetesk8s集群部署springboot项目

kubernetes安装(二进制安装)

Linux企业运维——Kubernetesk8s网络通信

云原生 • Kubernetesk8s功能特性k8s集群架构介绍

kubernetesk8s集群搭建(完整详解)

linux12k8s --> 02理论介绍,架构图