一、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删掉




286

被折叠的 条评论
为什么被折叠?



