kubeadm 部署k8s
闲聊考虑了很久,打算写一篇保姆级部署从0-1构建企业级cicd流水线,把工作上面所用到的技术点分享给大家。从最k8s,harbor,jenkins,gitlab,docker的详细部署到集成。前后端流水线的构建,发布等...假如以下内容有不敷的地方,请指出,我会第一时间更正。谢谢大家。
先上一下手绘导图,大致的流程图如下:
大致的部署流程是这样的:开发职员把做好的asp.net core项目代码通过git推送到gitlab,然后Jenkins通过 gitlab webhook (前提是设置好),自动从拉取gitlab上面拉取代码下来,然后进行build,编译、生成镜像、然后把镜像推送到Harbor仓库;然后在部署的时间通过k8s拉取Harbor上面的代码进行创建容器和服务,最终发布完成,然后可以用外网访问。
https://img2024.cnblogs.com/blog/2829682/202412/2829682-20241210143535340-815029343.png
当然啦,上面只是粗略的,请看下图才更加形象。
https://img2024.cnblogs.com/blog/2829682/202412/2829682-20241210143623880-980158125.png
一、前言
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分区
swapoff -a && sysctl -w vm.swappiness=0# 临时关闭
sed -ri '/^[^#]*swap/s@^@#@' /etc/fstab# 基于配置文件关闭确保各个节点MAC地点或product_uuid唯一
ifconfigens33| grep ether | awk '{print $2}'
cat /sys/class/dmi/id/product_uuid
温馨提示:
一般来讲,硬件设备会拥有唯一的地址,但是有些虚拟机的地址可能会重复。
Kubernetes使用这些值来唯一确定集群中的节点。 如果这些值在每个节点上不唯一,可能会导致安装失败。检查网络节点是否互通
简而言之,就是检查你的k8s集群各节点是否互通,可以使用ping命令来测试。
ping www.baidu.com -c 10
ping master231 -c 10答应iptable检查桥接流量
cat <<EOF | tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF初始化master组件
cat <<EOF | tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
sysctl --system部署worler组件,添加节点
所有节点修改cgroup的管理进程为systemd==乌班图默认不用修改
# docker info| grep "Cgroup Driver:"
Cgroup Driver: systemd
#
# docker info| grep "Cgroup Driver:"
Cgroup Driver: systemd
#
# docker info| grep "Cgroup Driver:"
Cgroup Driver: systemd
#
温馨提示:
如果不修改cgroup的管理驱动为systemd,则默认值为cgroupfs,在初始化master节点时会失败部署CNI插件,打通网络
1.K8S所有节点配置软件源
apt-get update && apt-get install -y apt-transport-https
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
2.获取最新软件包信息
apt-get update
3.查看一下当前环境支持的k8s版本
# apt-cache madison kubeadm
kubeadm |1.28.2-00 | https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial/main amd64 Packages
kubeadm |1.28.1-00 | https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial/main amd64 Packages
kubeadm |1.28.0-00 | https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial/main amd64 Packages
4.安装 kubelet kubeadm kubectl
apt-get -y install kubelet=1.23.17-00 kubeadm=1.23.17-00 kubectl=1.23.17-00
5.所有节点都要检查各组件版本
kubeadm version
kubectl version
kubelet --version五、安装kubectl工具自动补全功能
1.暂时补全生效apt -y install bash-completionsource /usr/share/bash-completion/bash_completionsource
页:
[1]