Kubernetes集群(k8s)- 介绍和部署
目录
- 1. Kubernetes简介
- 1. k8s
- 1.2 Kubernetes的好处
- 1.3 kubernetes设计架构
- 1.4 kubernetes设计架构(2)
- 2. Kubernetes集群环境部署
- 2.1 基础实验环境
- 2.2 harbor仓库
- 2.3 关闭节点的selinux和iptables防火墙
- 3.4 所有节点安装docker
- 2.5 所有主机设置防火墙策略
- 2.6 在server1上传仓库认证文件到其他节点
- 2.7 所有节点创建dameon.json文件
- 2.8 所有节点禁用swap分区
- 2.9 配置k8s所需的yum源并上传到其他节点
- 3. 安装部署软件kubeadm
- 3.1 所有节点安装工具
- 3.2 查看默认配置信息
- 3.3 修改镜像仓库
- 3.4 上传仓库密钥和添加解析
- 3.5 上传和拉取镜像
- 3.6 初始化集群
- 3.7 节点扩容
- 3.8 安装flannel网络组件
- 3.9 配置kubectl
- 4. k8s删除和恢复节点
- 4.1 删除节点
- 4.2 恢复重新加入加入节点
1. Kubernetes简介
1. k8s
k8s是Kubernetes的简称,因为K和S之间有8个字母,所以才会被称为k8s。
k8s最初是在Google公司内部使用了10多年的技术,它的前身是叫做Borg(博格),直到2015年才被Google公司捐赠为开源项目。
在Docker 作为高级容器引擎快速发展的同时,在Google内部,容器技术已经应 用了很多年,Borg系统运行管理着成千上万的容器应用。
- Kubernetes项目来源于Borg,可以说是集结了Borg设计思想的精华,并且吸收 了Borg系统中的经验和教训。
- Kubernetes对计算资源进行了更高层次的抽象,通过将容器进行细致的组合, 将最终的应用服务交给用户。
1.2 Kubernetes的好处
• 隐藏资源管理和错误处理,用户仅需要关注应用的开发。
• 服务高可用、高可靠。
• 可将负载运行在由成千上万的机器联合而成的集群中
1.3 kubernetes设计架构
- 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 | 提供集群日志采集、存储与查询 |
1.4 kubernetes设计架构(2)
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、集群自身 的配置和管理等
2. Kubernetes集群环境部署
k8s官网
https://kubernetes.io/docs/setup/production- environment/container-runtimes
2.1 基础实验环境
主机名 IP 功能
server1 172.25.11.101 harbor仓库主要给k8s节点提供镜像源
server2 172.25.11.102 k8s:master节点:4G运行内存2个CPU
server3 172.25.11.103 k8s:节点(node1):2G运行内存2个CPU
server4 172.25.11.104 k8s:节点(node2):2G运行内存2个CPU
2.2 harbor仓库
server1部署harbor仓库前面文章有具体部署过程
注意:最好配置(阿里云)镜像加速器(/etc/docker/daemon.json文件里面写入加速器地址),加快镜像下载速度,加速器地址就在aliyum镜像官网。
2.3 关闭节点的selinux和iptables防火墙
3.4 所有节点安装docker
软件包:在aliyun的开源镜像网站查找docker
containerd.io-1.2.13-3.1.el7.x86_64.rpm
docker-ce-19.03.8-3.el7.x86_64.rpm
docker-ce-cli-19.03.8-3.el7.x86_64.rpm
解决依赖性:https://centos.pkgs.org/7/centos-extras-armhfp/container-selinux-2.107-3.el7.noarch.rpm.html
container-selinux-2.77-1.el7.noarch.rpm 安装过程解决依懒性(注意版本号)
systemctl enable --now docker 启动服务并设置开机自启
2.5 所有主机设置防火墙策略
2.6 在server1上传仓库认证文件到其他节点
[root@server1 reg.westos.org]# pwd
/etc/docker/certs.d/reg.westos.org
[root@server1 reg.westos.org]# scp ca.crt server2/3/4:
2.7 所有节点创建dameon.json文件
systemctl restart docker 记得重启docker服务
复制到其他节点:scp /etc/docker/daemon.json server2/3/4
重启服务:systemctl restart docker
2.8 所有节点禁用swap分区
swapoff -avim /etc/fstab
#/dev/mapper/rhel-swap swap swap defaults 0 0
注释掉/etc/fstab文件中的swap定义
2.9 配置k8s所需的yum源并上传到其他节点
scp /etc/yum.repos.d/k8s.repo server2/3/4
3. 安装部署软件kubeadm
3.1 所有节点安装工具
kubelet | 用来初始化集群的指令 |
---|---|
kubeadm | 在集群各个节点用来启动pod和容器 |
kubectl | 用来与集群通信的命令工具(可以只装其中某一个节点;这里全装) |
3.2 查看默认配置信息
3.3 修改镜像仓库
默认从k8s.gcr.io上下载组件镜像,需要翻墙才可以,所以需要修改镜像仓库:
3.4 上传仓库密钥和添加解析
vim /etc/hosts
3.5 上传和拉取镜像
- 1. 修改仓库标签
for i in `docker images | grep aliyuncs| awk '{print $1":"$2}' | awk -F / '{print $3}'`;do docker
tag registry.aliyuncs.com/google_containers/$i reg.westos.org/library/$i ; done
修改镜像标签为server1的仓库路径
- 2. 上传镜像到私有仓库
先登录habor仓库
docker login westos.orgfor i in `docker images | grep reg.westos.org`;do docker push reg.rwestos.org/library/$i; done
上传镜像到harbor仓库for i in `docker images | grep aliyuncs | awk '{print $1":"$2}'`;do docker rmi $i; done删除之前拉取的阿里云镜像
- 3. 拉取镜像
3.6 初始化集群
kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository reg.westos.org/library 初始化集群集群
--pod-network-cidr=10.244.0.0/16:指定flannel网络组件时必须添加
cpu不能为单核,不然会失败。
生成token和哈希码:当其他节点想要加入集群时必须使用此参数 ;但是token值只有24h之后无法在使用,过期之后需要重新生成token值方便其他主机加入集群,哈希码是固定的
3.7 节点扩容
3.8 安装flannel网络组件
- master节点查看状态
kubectl get pod -n kube-system 必须全部为running时间稍有点缓慢耐心等待
- 其他节点server3 、4会自动拉取镜像
3.9 配置kubectl
在server1:master节点配置kubectl
useradd kubeadm 创建此用户并做权限下放visudo 编辑权限下放
kubeadm ALL=(ALL) NOPASSWD: ALLmkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
若是使用超级用户将此.kube/config目录复制到root家目录下
配置kubectl命令补齐功能:
echo "source <(kubectl completion bash)" >> ~/.bashrc
- kubectl命令指南:
https://kubernetes.io/docs/reference/generated/kubectl/kubectl- commands
4. k8s删除和恢复节点
4.1 删除节点
[root@server2 ~]# kubectl drain server3 --delete-local-data --force --ignore-daemonsets 删除节点
node/server3 cordoned
WARNING: ignoring DaemonSet-managed Pods: kube-system/kube-flannel-ds-amd64-95cp4, kube-system/kube-proxy-cl7lr
node/server3 drained
[root@server2 ~]# kubectl get node 查看还存在集群当中
NAME STATUS ROLES AGE VERSION
server2 Ready master 28h v1.18.4
server3 Ready,SchedulingDisabled <none> 27h v1.18.4
server4 Ready <none> 27h v1.18.4
[root@server2 ~]# kubectl delete node server3 彻底删除
node "server3" deleted
[root@server2 ~]# kubectl get node 查看已经删除
NAME STATUS ROLES AGE VERSION
server2 Ready master 28h v1.18.4
server4 Ready <none> 27h v1.18.4
4.2 恢复重新加入加入节点
[root@server3 ~]# kubeadm reset 清除之前加入的信息
按照刚开始加入节点的方式重新加入即可
Kubernetes集群(k8s)- 介绍和部署相关推荐
- Kubernetes 集群仓库 Harbor Helm3 部署
文章目录 Kubernetes 集群仓库 harbor Helm3 部署 一.简介 二.先决条件 三.准备环境 1.系统环境 2.核实动态存储 3.安装 Helm3 3.1.在线安装 3.2.下载安装 ...
- Redis 由浅入深 (2) - Redis哨兵和集群的介绍和部署方案(看完这篇redis部署再也不是问题)
文章目录 Redis的三种部署方案 1. 单机 部署 单机运维 2.主从哨兵 主从结构部署 主从部署 redis 哨兵主从部署 哨兵部署 部署注意事项 3.集群 集群介绍 数据分区 集群的限制 集群部 ...
- 【云原生 • Kubernetes】k8s功能特性、k8s集群架构介绍
目录(k8s集群搭建先导篇) 一.Kubernetes 的特性/功能 二.Kubernetes 集群架构介绍 1. master node 节点 2. worker node 节点 三.Kuberne ...
- 部署Kubernetes集群(二进制 v1.18.8版)
第一章 kubernetes 功能介绍 · kubernetes 从入门到实践 · 看云 二进制 部署Kubernetes集群 组件版本 组件 版本 二进制包下载地址 备注 centos 7.8.20 ...
- 部署Kubernetes集群(二进制 v1.18.5版)
文章目录 一.Kubernetes的基本知识 1. 安装要求 2. 系统初始化配置 二.部署Etcd集群 2.1 准备cfssl证书生成工具 2.2 生成Etcd证书 2.2.1 自签证书颁发机构(C ...
- kubernetes集群环境搭建(kubeadm方式)
1. kubernetes简介 kubernetes,是一个全新的基于容器技术的分布式架构领先方案,是谷歌严格保密十几年的秘密武器----Borg系统的一个开源版本,于2014年9月发布第一个版本,2 ...
- Rancher 2.x 搭建及管理 Kubernetes 集群
文章目录 1.Rancher 2.x 介绍 1.1.Rancher 1.x VS Rancher 2.x 1.2.Rancher 2.x 架构图 2.环境.软件准备 3.创建 RancherOS 启动 ...
- Kubernetes集群搭建以及基本使用【具详细】;
文章目录 前言 一.有了docker为什么还需要k8s 二.K8s介绍.集群架构.服务器配置推荐 1.kubernetes是什么 2.Kubernetes集群架构与组件 3.生产环境部署K8s的两种方 ...
- 快速入门容器服务,创建Kubernetes集群
使用须知 创建集群过程中,容器服务会进行如下操作: 创建 ECS,配置管理节点到其他节点的 SSH 的公钥登录,通过 CloudInit 安装配置 Kubernetes 集群. 创建安全组,该安全组允 ...
最新文章
- library “libopencv_java4.so“ not found“
- JUC并发编程三 并发架构--线程运行原理
- CPU和微架构的概念
- 【快乐水题】520. 检测大写字母
- CentOS常用指令
- core Bluetooth(蓝牙4.0)
- 数据结构(终极线段树篇)
- spring data jpa从入门到精通_程序员笔记:Spring Data JPA入门
- 微信小程序预览pdf功能实现
- MATLAB中的清除,oop – 在MATLAB中清除类定义
- Qt4_子类化QMainWindow
- 《精通软件性能测试与LoadRunner最佳实战》—第1章1.1节软件测试基础
- 搞清字库表、编码字符集、字符编码
- linux ln mysql.sock_linux中MySQL连接找不到mysql.sock文件
- python 打开xml文件修改其中的值,通过点选图像获得其像素值
- Ubuntu安装Matlab
- 软件单元测试方法,单元测试的基本测试方法
- 戴尔服务器加无线网卡用不了网,电脑安装了无线网卡却不能用是怎么回事?
- 5月末跟大家讲讲webpack(生日篇)
- 【抽奖平台开发(1)】抽奖功能的前端实现(HTML+JS+CSS)
热门文章
- java计算机毕业设计智慧公寓系统演示录屏2021源码+数据库+系统+lw文档
- 【无2021年标准员-通用基础(标准员)考试内容及标准员-通用基础(标准员)复审模拟考试
- 云时代,你离专业企业移动工作平台之间,还差什么—Cnskype
- Linux iptables 端口转发
- HTTP HTTPS WebService
- Python 从菜鸟到大咖的必经之路
- Python初级爬虫(利用多任务协程爬取虎牙MM图片)
- 百度网盘又被破解了,这次是一个99年的小美女做的哦!
- oracle shutdown immediate 没反应,ORACLE 执行EXECUTE IMMEDIATE没反应
- recyclerview探探_RecyclerView卡片(探探,翻译君等)效果全指南