云原生:k8s集群部署
一、k8s概述K8s 即 Kubernetes是谷歌开源的容器编排平台如果说 Docker 负责把应用打包成容器那 K8s 就用来批量管理大量容器解决多机器多容器下手动运维繁琐、故障处理困难的问题。它可以自动将容器调度到集群合适服务器实现故障自愈容器异常或服务器宕机时自动重启、迁移业务支持根据流量自动弹性扩缩容还能做到业务无间断滚动更新与故障回滚自带服务发现和负载均衡同时可以统一管理存储保证容器重建后数据不丢失多用于微服务、需要 7×24 小时稳定运行、流量波动大的集群业务。二、部署kubernetes所需主机三、开始部署1.构建harbor镜像仓库部署docker本地仓库写入阿里云docker官方repo源安装httpdcreaterepo工具创建仓库目录修改 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.orgSAN 主题备用域名浏览器 /docker 客户端校验证书域名必须缺少会报证书域名不匹配-x509直接生成自签名证书-days 365证书有效期 365 天-out输出证书timinglee.org.crt重点Common Name和 SAN 的 DNS 域名必须等于 harbor 访问域名reg.timinglee.org否则 docker 拉取镜像会证书报错。编辑harbor配置文件将 harbor 离线包解压到/opt目录进入 harbor 工作目录复制模板生成正式配置文件修改核心配置项执行安装脚本附带 chartmuseumhelm 图表仓库组件编写 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集群部署完毕