云原生:k8s集群部署

一、k8s概述

K8s 即 Kubernetes,是谷歌开源的容器编排平台,如果说 Docker 负责把应用打包成容器,那 K8s 就用来批量管理大量容器,解决多机器多容器下手动运维繁琐、故障处理困难的问题。它可以自动将容器调度到集群合适服务器,实现故障自愈,容器异常或服务器宕机时自动重启、迁移业务,支持根据流量自动弹性扩缩容,还能做到业务无间断滚动更新与故障回滚,自带服务发现和负载均衡,同时可以统一管理存储保证容器重建后数据不丢失,多用于微服务、需要 7×24 小时稳定运行、流量波动大的集群业务。

二、部署kubernetes所需主机

三、开始部署

1.构建harbor镜像仓库

部署docker本地仓库

写入阿里云docker官方repo源,安装httpd,createrepo工具

创建仓库目录,修改 httpd 监听端口为 4444开机自启 httpd 服务

只下载 docker‑ce 安装包,不安装,包保存到 /mnt 目录

移动 rpm 包到 http 网页目录,生成 yum 仓库元数据:把所有 rpm 包移到网页访问目录;createrepo生成 repodata 仓库索引元数据,yum 才能识别这个文件夹为软件仓库。

修改本机 repo,指向本地内网 http 仓库从本地仓库安装 docker-ce

安装docker在harbor仓库节点

配置 br_netfilter 网桥过滤内核模块,写入 sysctl 内核网络参数 /etc/sysctl.d/docker.conf

重启模块加载服务,sysctl --system全局生效所有 sysctl 配置

修改 docker.service systemd 启动参数,重载 systemd 配置,启动并开机自启 docker

生产key

参数说明:

  • -newkey rsa:4096:生成 4096 位 RSA 私钥
  • -nodes:私钥不加密,不需要密码,方便 Harbor 容器直接读取
  • -sha256:使用 sha256 哈希算法
  • -keyout:输出私钥文件timinglee.org.key
  • -addext "subjectAltName = DNS:reg.timinglee.org":SAN 主题备用域名,浏览器 /docker 客户端校验证书域名必须,缺少会报证书域名不匹配
  • -x509:直接生成自签名证书
  • -days 365:证书有效期 365 天
  • -out:输出证书timinglee.org.crt

重点:Common Name和 SAN 的 DNS 域名必须等于 harbor 访问域名reg.timinglee.org,否则 docker 拉取镜像会证书报错。

编辑harbor配置文件

将 harbor 离线包解压到/opt目录,进入 harbor 工作目录,复制模板生成正式配置文件

修改核心配置项

执行安装脚本,附带 chartmuseum(helm 图表仓库组件)

编写 systemd 服务文件/lib/systemd/system/harbor.service

开机自启动harbor服务并且测试

启动并且验证

创建 docker 证书目录,导入自签名证书,修改/etc/hosts做本地域名解析

docker 登录 harbor 仓库

2、利用Ansible部署kubernetes运行环境

在所有主机上配置关闭swap

所有主机彼此建立解析

安装ansible

配置所需用户

生成ansible的临时配置文件并建立运行环境

建立用户

生成ansible的主配置文件并测试

利用ansible剧本部署docker

利用ansible安装cri-dockerd

将playbook后方修改为这样

利用ansible部署k8s软件

在master控制节点生效补全功能

服务已开启

3.在master中初始化kubernetes集群

下载镜像

拉取镜像完成

上传镜像到本地harbor

在master中完成集群初始化

添加kubernets环境变量到本机

添加node节点到本集群

在master控制主机可以检查加入node

可以看到集群中主机但是因为网络插件问题状态是NotReady

安装网络插件

上传镜像到harbor仓库

修改 vim kube-flannel.yml playbook内容将三个镜像目录路径前面的ghcr.io删掉

kubernetes集群部署完毕

相关推荐
zhangrelay26 分钟前
机械臂末端规划智能模型的误区演示
linux·笔记·学习·ubuntu·ros2
Ivanqhz2 小时前
正余弦位置编码(Sinusoidal Positional Encoding)
java·linux·数据库
H.莓飛2 小时前
【数据结构】队列
linux·数据结构·centos
小此方3 小时前
Linux网络(十九):TCP流量控制与滑动窗口详解,超时重传和快重传到底有什么区别
linux·运维·服务器·网络·网络协议·tcp/ip
码上有光3 小时前
Linux进程通信——共享内存、消息队列和信号量
android·linux·运维·共享内存·通信
沫璃染墨3 小时前
《从零入门Linux系统篇(五十四):线程篇·七——互斥锁底层原理:从原子交换到线程竞争与锁实现》
linux·运维·服务器·开发语言·c++·驱动开发·系统架构
Java后端的Ai之路3 小时前
Python进阶探索24_应用案例_linux系统的监控
linux·开发语言·python·应用·探索
H.莓飛4 小时前
【数据结构】队列_OJ题
linux·数据结构·centos
H.莓飛4 小时前
【数据结构】栈_OJ题
linux·数据结构·算法·centos
Ruiery4 小时前
Linux 6.6内核 CPU 深度解析(一):BSP 拉起 — 从实模式到 kernel_init 的完整旅程
linux·运维·服务器