| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> K8S概念与安装、搭建集群(K8S学习一) -> 正文阅读 |
|
[系统运维]K8S概念与安装、搭建集群(K8S学习一) |
介绍Kubernetes是一个全新的基于容器技术的分布式架构方案,它本质是一组服务器集群,它可以在集群的每个节点上运行特定的程序,来对节点中的容器进行管理。 它的目的就是实现资源管理的自动化。主要提供了下面的功能: 1、自我修复:一旦某一个容器崩溃,能够在秒级迅速启动新的容器; 2、弹性伸缩:可以根据需要,自动对集群中正在运行的容器数量进行调整; 3、服务发现:服务可以通过自动发现的形式找到它所依赖的服务; 4、负载均衡: 如果一个服务启动了多个容器,能够 实现自动的付负载均衡; 5、版本回退:如果发现新版本的程序有问题,可以立即回退到原来的版本; 6、存储编排:可以根据容器自身的需求自动创建储存卷。 ?Kubernetes组件一个K8s集群主要是由控制节点(master)、工作节点(node)构成,每个节点上都会安装不同的组件。 master:集群的控制平面,负载集群的决策ApiServer :资源操作的唯一入口,接收用户输入的命令,提供认证,授权,API注册和发现机制 Scheduler:负责集群资源调度,按照预定的调度策略将Pod调度到相应的node节点上 controllerManager:负责维护集群的状态,比如程序部署安排、故障检测、自动扩展、滚动更新等 ETCD:负责储存集群中各种资源对象的信息 node:集群的数据平面,负责为容器提供运行环境kubelet:负责维护容器的声明周期,即通过控制docker来创建、更新、销毁容器 kubeProxy:负责提供集群内部的服务发现和负载均衡 Docker:就系Docker ? ? ? ? ? ? ? ? ? ? ? ? ?Master? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Node? 举个流程顺序的栗子: 1、一旦K8S环境启动之后,master和node都会将自身的信息存储到ETCD数据库中(便于K8S管理); 2、1个nginx服务的安装请求会首先被发送到master节点的apiServer组件去 3、apiServer组件会调用Scheduler组件来决定到底把nginx这个服务装到哪个node节点上(在此时,它会从etcd中读取各个node节点的信息,然后用算法进行选择,将结果返回给apiServer) 4、apiServer调用controller-mannaer去调度控制选中的node进行安装ngginx服务; 5、kubelet接收到指令后,会通知docker,然后docker启动一个nginx的POD (pod系kubernetes的最小操作单元,容器必须跑在pod中) 6、一个nginx服务就运行了,如果需要访问Nginx,就要通过kube-proxy来对pod产生访问的代理.这样外界用户就可以访问集群中的nginx服务了。 K8S概念Maser : 集群控制节点,每个集群需要至少一个master节点负责集群的管控; Node : 工作负责节点,由master分配容器到这些node工作节点上,然后node节点上的docker负责容器的运行; Pod : K8s中最少的控制单元,容器都系运行在pod中的,一个pod中可以有1个或者多个容器 Controller : 控制器,通过它来实现对pod的管理 , 比如启动pod、停止pod、伸缩pod的数量等 Service : pod对外服务的统一入口,下面可以维护着同一类的多个pod(与外界的桥梁) Label : 标签,用于对pod进行分类,同一类的pod会有相同的标签; NameSpace:命名空间,用来隔离pod的运行环境 ?K8S安装集群类型K8S一般就两种: 一主多从:1Master对多Node,搭建简单。但是master一挂就GG高风险 多主多从:多Master对多Node,搭建麻烦,高可用适合生产环境 ?安装方式K8S有多重部署方式,主流的有kubeadm,minikube,二进制包(听说要装一天,一个组件一个组件的装) minikube : 一个用于快速搭建单节点的K8S工具 kubeadm: 一个用于快速搭建K8S集群的工具 二进制包: 从官网下载每个组件的二进制包,依次去安装。主要拿来学组件。 这次我们是用 一主多从, kubeadm的方式进行安装的。 主机规划(好像不到2核或2G会报错的。)?K8S玩Centos的话 一定要7.5以上哦! 安装之一、环境初始化1)检查操作系统版本是否是centos7.5以上 2) 主机名解析 为了方便后面集群节点间的直接调用,配置一下主机名解析,企业中推荐使用DNS服务器 #主机名即系 编辑三台服务器的/etc/hosts 文件,添加下面的内容 master ip and nodes ip : ? ?设置成功后 直接ping hosts里面是可以通的 ?3) 配置时间同步 K8S要求集群中的节点时间必须精确一直, 在这里直接使用chronyd服务从网络同步时间。? 企业建议配置内部的时间同步服务器(我这里是三个SSH窗口同时执行的)
4) 禁用iptables和firewalld服务 kubernetes和docker在运行中会产生大量的iptables规则,为了不让系统规则跟他们混淆,直接关闭系统的规则 #1 关闭防火墙服务 systemctl stop firewalld? systemctl disable firewalld #2关闭iptables服务 systemctl stop iptables systemctl disable iptables 5) 禁用selinux selinux 是linux系统的一个安全服务,如果不关闭它,在安装集群中会产生各种奇葩问题
6)禁用swap分区 swap分区指的是虚拟内存分区,他的作用是在物理内存使用完之后,将磁盘空间虚拟成内存使用,启用swap设备会对系统的性能产生非常负面的影响,因此k8s要求每个节点都要禁用swap设备,但是如果因为某些原因却是不能关闭swap分区,就需要再集群安装过程中通过明确的参数进行配置说明;
7) 修改linux的内核参数
8)配置ipvs功能 在kubernetes中service有两种代理模型,一种是基于iptables的,一种是基于ipvs的两者比较的话,ipvs的性能明显高一些,但是如果要使用它 需要手动载入ipvs模块
9) 重启Linux系统 上面步骤完成后,需要重启电脑哦。 ----------------------------------------------------------------DONE 安装集群所需的组件1.安装docker
2.安装Kubernetes组件#由于K8S的镜像源在国外,速度比较慢,这里切换成国内的镜像源
3.集群初始化准备集群镜像
集群初始化下面开始对集群进行初始化,并将node节点加入到集群中 下面的操作只需要再master节点上执行即可 下面指令中 ? ? ?pod - net word = (pod网络,不用改)
初始化成功后, 这里我们要使用集群,所以按照提示执行一下下面的三个命令。 ?Node节点加入Master节点 下面操作只需要在node节点上执行即刻
由于查看kubectl get nodes的知道, 所有节点的状态的是NONE的。为什么呢? 因为节点之间没有安装网络插件, 下面操作依旧只在master节点即刻,插件使用的是DaemonSet的控制器,他会在每个节点上运行。 kubernetes其实支持多种网络插件,比如flannel,calico,canal等等,这里我用Flannel. #获取Fannel文件可能被墙了。 这种情况可以访问https://raw.githubusercontent.com/coreos/flannel/v0.9.1/Documentation/kube-flannel.yml 直接vim kube-flannel.yml 将内容粘贴上去。(yml我是上传到/root目录的) 上传好以后 在这个目录直接kubectl apply -f kube-flannel.yml就可以了 完成后直接上图:(我在这时候不成功。node1/node2都ready了,但是master是NoReady的。 这是为什么呢? 我这边看了/etc/hosts是指定主机名为master,.但是我的hostname不是这个名字 于是我临时改了我的hostname 输入命令 hostname master 然后在kubeadm rest重置节点。 再重新建立一次集群。 这次终于成功了,我叼。) ?发一次代码记录下先。
至此,kubernetes的集群环境搭建完成。 验证集群是否安装成功搭建Nginx测试。以后的操作,直接在master节点操作就可以了呀~~~~ 程序在容器里, 容器在pod里。
? ? ?即刻去访问一下先 ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 11:51:11- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |