kubeadm 部署k8s

打印 上一主题 下一主题

主题 873|帖子 873|积分 2619

闲聊

考虑了很久,打算写一篇保姆级部署从0-1构建企业级cicd流水线,把工作上面所用到的技术点分享给大家。从最k8s,harbor,jenkins,gitlab,docker的详细部署到集成。前后端流水线的构建,发布等...假如以下内容有不敷的地方,请指出,我会第一时间更正。谢谢大家。
先上一下手绘导图,大致的流程图如下:
大致的部署流程是这样的:开发职员把做好的asp.net core项目代码通过git推送到gitlab,然后Jenkins通过 gitlab webhook (前提是设置好),自动从拉取gitlab上面拉取代码下来,然后进行build,编译、生成镜像、然后把镜像推送到Harbor仓库;然后在部署的时间通过k8s拉取Harbor上面的代码进行创建容器和服务,最终发布完成,然后可以用外网访问。

当然啦,上面只是粗略的,请看下图才更加形象。

一、前言

K8s 集群部署有多种方式,kubeadm 是 K8s 官方提供的集群部署工具,这种方法最为常用,简单快速,适合初学者。本文就使用 kubeadm 搭建集群演示。
二、主机预备

本次我们搭建一套 3 个节点的 K8s 集群,操作系统使用Ubuntu 22.04.4 LTS,设置2核4G,ip规划如下
主机名ip地点主机设置master23110.0.0.2312核,4GiB,系统盘 20GiBworker23210.0.0.2322核,4GiB,系统盘 20GiBworker23310.0.0.2332核,4GiB,系统盘 20GiB三、系统设置

关闭swap分区
  1. swapoff -a && sysctl -w vm.swappiness=0  # 临时关闭
  2. sed -ri '/^[^#]*swap/s@^@#@' /etc/fstab  # 基于配置文件关闭
复制代码
确保各个节点MAC地点或product_uuid唯一
  1. ifconfig  ens33  | grep ether | awk '{print $2}'
  2. cat /sys/class/dmi/id/product_uuid
  3. 温馨提示:
  4.    一般来讲,硬件设备会拥有唯一的地址,但是有些虚拟机的地址可能会重复。
  5.    Kubernetes使用这些值来唯一确定集群中的节点。 如果这些值在每个节点上不唯一,可能会导致安装失败。
复制代码
检查网络节点是否互通
  1. 简而言之,就是检查你的k8s集群各节点是否互通,可以使用ping命令来测试。
  2. ping www.baidu.com -c 10
  3. ping master231 -c 10
复制代码
答应iptable检查桥接流量
  1. cat <<EOF | tee /etc/modules-load.d/k8s.conf
  2. br_netfilter
  3. EOF
复制代码
初始化master组件
  1. cat <<EOF | tee /etc/sysctl.d/k8s.conf
  2. net.bridge.bridge-nf-call-ip6tables = 1
  3. net.bridge.bridge-nf-call-iptables = 1
  4. net.ipv4.ip_forward = 1
  5. EOF
  6. sysctl --system
复制代码
部署worler组件,添加节点
  1. 所有节点修改cgroup的管理进程为systemd==乌班图默认不用修改
  2. [root@master231 ~]# docker info  | grep "Cgroup Driver:"
  3. Cgroup Driver: systemd
  4. [root@master231 ~]#
  5.        
  6. [root@worker232 ~]# docker info  | grep "Cgroup Driver:"
  7. Cgroup Driver: systemd
  8. [root@worker232 ~]#
  9. [root@worker233 ~]# docker info  | grep "Cgroup Driver:"
  10. Cgroup Driver: systemd
  11. [root@worker233 ~]#
  12. 温馨提示:
  13.         如果不修改cgroup的管理驱动为systemd,则默认值为cgroupfs,在初始化master节点时会失败
复制代码
部署CNI插件,打通网络
  1. 1.K8S所有节点配置软件源
  2. apt-get update && apt-get install -y apt-transport-https
  3. curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
  4. cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
  5. deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
  6. EOF
  7. 2.获取最新软件包信息
  8. apt-get update
  9. 3.查看一下当前环境支持的k8s版本
  10. [root@master231 ~]# apt-cache madison kubeadm
  11.    kubeadm |  1.28.2-00 | https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial/main amd64 Packages
  12.    kubeadm |  1.28.1-00 | https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial/main amd64 Packages
  13.    kubeadm |  1.28.0-00 | https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial/main amd64 Packages
  14.    
  15. 4.安装 kubelet kubeadm kubectl
  16. apt-get -y install kubelet=1.23.17-00 kubeadm=1.23.17-00 kubectl=1.23.17-00
  17. 5.所有节点都要检查各组件版本
  18. kubeadm version
  19. kubectl version
  20. kubelet --version
复制代码
五、安装kubectl工具自动补全功能

[code]  1.暂时补全生效  apt -y install bash-completion  source /usr/share/bash-completion/bash_completion  source

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

九天猎人

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表