Kubernetes 1.19.0环境搭建
Kubernetes(以下简称k8s)是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。由于Kubernetes 1.19.0在2020年8月底刚更新,这边先对新版本的安装作一个详细的阐述。
概念简单介绍
• kubectl:客户端命令行工具,将接受的命令格式化后发送给kube-apiserver,
作为整个系统的操作入口。
• kube-apiserver:作为整个系统的控制入口,以REST API服务提供接口。
• kube-controller-manager:用来执行整个系统中的后台任务,包括节点状态状
况、Pod个数、Pods和Service的关联等。
• kube-scheduler: 负责节点资源管理,接受来自kube-apiserver创建Pods任务,
并分配到某个节点。
• etcd:负责节点间的服务发现和配置共享。
• kube-proxy: 运行在每个计算节点上,负责Pod网络代理。定时从etcd获取到
service信息来做相应的策略。
• kubelet:运行在每个计算节点上,作为agent,接受分配该节点的Pods任务及管理容器,周期性获取容器状态,反馈给kube-apiserver
安装k8s环境试验拓扑图
机器配置:
三台虚拟机均为200G硬盘容量,4G内存,处理器数量2
工具:VMWare15
环境搭建
先准备好能ping通外网的3台虚拟机
--在master和node上执行
关闭防火墙,selinux,关闭swap, 配置yum
安装docker ,yum install docker -y ,启动docker并设置开机自动启动
为节省文章篇幅以下以master为例
以上为yum源的配置,分别为CentOS-Base.repo、epel.repo 和k8s.repo
3个节点同时安装docker并开机自启
同样需要3个节点配置加速器方便后期提供下载镜像的速度
在3台docker启动的情况下设置以上对iptables增强功能性启用的一些系统参数并使其生效
以上,准备工作就绪,现在开始安装k8s 1.19.0
同样在每个节点安装
yum install -y kubelet-1.19.0-0 kubeadm-1.19.0-0 kubectl-1.19.0-0 --disableexcludes=kubernetes
注:--disableexcludes=kubernetes意思是去除yum源中和安装这些包有冲突的包
安装完成后设置开机自启
#为什么重启后 kubectl没法正常执行?
1. 确保所有网卡都是静态配置的
2. 确保swap和selinux以及防火墙重启也是关闭的
3. 确保kubelet设置开机自启成功
先删除/var/lib/docker/下的镜像,然后重启docker
由于事先下载好了k8s的镜像,所以现在只需docker load -i 导入(3节点都需导入)
以上导入镜像完毕
在master主节点运行初始化:
kubeadm init --kubernetes-version=v1.19.0 --pod- network-cidr=10.244.0.0/16
到此初始化成功,但是需要运行上面红框中的命令,目的是设置kubeconfig认证(所谓kubeconfig认证并非是有一个kubeconfig文件)和把worker加入集群
主节点master运行以上三条
2个worker节点均运行这条命令成功
到此,k8s 1.19.0搭建成功
我们可以看到status是NotReady,那么怎样才能把集群启动起来呢?
Master和各个worker之间需要创建一条高速通道,这条通道可以通过flannel或者calico网络来实现,本次搭建使用calico网络。由于事先已经提前下载好calico镜像,所以三台机器同时导入镜像。
再说一次,k8s主要作用是用来管理docker容器的,导入成功后在主节点上apply事先下载好的calico.yaml的文件
成功后再次查看集群状态
到此,k8s 1.19.0 集群搭建完成并成功启动
- 教你用一行Python代码实现并行(附代码)
- 在美国国会图书馆标题表的SKOS上运行Apache Spark GraphX算法
- 【精选】破解波动性突破实盘系统
- 从程序员的角度看神经网络的激活功能
- 在线矩阵微积分工具,可以生成 Python/Latex 代码哦!
- 机器学习应用区块链系列(一)——如何开发一套自己的智能合约系统
- 使用Botkit和Rasa NLU构建智能聊天机器人
- 【量化投资】缠论面面观(附Python源码)
- 独家 | 教你用Q学习算法训练神经网络玩游戏(附源码)
- 使用重采样评估Python中机器学习算法的性能
- Autofac正式发布2.1版
- DataDirectory是什么?
- android的消息通知栏
- qq安全原理
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法