ubuntu系统kubeadm搭建k8s集群

之前看到很多技术博客上描述kubeadm搭建k8s集群,感觉很简单,有一键安装的既视感,于是手贱想试下工作量到底有多大,没想到在众多技术文档的指导下还是踩了不少坑,特记录如下。
本人搭建使用vmware虚拟机,系统为ubuntu-23.10-live-server-amd64,集群两节点:192.168.254.135(master)、192.168.254.136(slave)
1、前期准备:vmware虚拟出两台ubuntu系统,虚拟机的网络模式设置为NAT模式,方便从外网下载需要的各种安装包。(如果网络模式设置为nat后,还是无法上网,ifconfig看下ens33网卡有没有分配ip,如果没有ip,可以看下window系统下服务vmware dhcp service和vmware nat service有没有开启)。安装ssh服务并设置节点之间免密登录(方便相互之间拷贝文件)。
2、环境准备:

# 更改主机名
hostnamectl set-hostname k8s-master
ufw disable # 关闭防火墙
# 关闭swap
swapoff -a # 临时
vim /etc/fstab # 永久需注释掉 swap 那一行
#
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
# 作为 Linux 节点的 iptables 正确查看桥接流量的要求,您应该确保在配置中设置为 1
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo sysctl --system

3、安装containerd

# 生成containetd的配置文件
mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml   
# 修改cgroup Driver为systemd(kubeadm把kubelet视为一个系统服务来管理,所以对基于kubeadm的安装,推荐使用systemd作为cgroup 驱动。)
sed  -i 's#SystemdCgroup = false#SystemdCgroup = true#' /etc/containerd/config.toml     
#查看是否修改成功
grep 'SystemdCgroup = true' -B 7 /etc/containerd/config.toml       
# 镜像加速
vim /etc/containerd/config.toml
[plugins."io.containerd.grpc.v1.cri".registry]
      [plugins."io.containerd.grpc.v1.cri".registry.mirrors]
        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
          endpoint = ["https://registry.cn-hangzhou.aliyuncs.com" ,"https://registry-1.docker.io"]  #修改为国内的阿里源
......
# 更改sandbox_image
[plugins."io.containerd.grpc.v1.cri"]
   disable_tcp_service = true
   stream_server_address = "127.0.0.1"
   stream_server_port = "0"
   stream_idle_timeout = "4h0m0s"
   enable_selinux = false
   selinux_category_range = 1024
   sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.5"  #这里镜像地址设置成阿里镜像源地址
# 加入开机启动 和重启服务
systemctl enable containerd && systemctl start containerd

4、安装kubeadm、kubectl、kubelet

#新增源
apt-get update && apt-get install -y apt-transport-https
curl -fsSL https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main"
apt-get update
#查看版本
apt-cache madison kubelet kubectl kubeadm
#指定版本安装
apt install -y kubelet=1.23.3-00 kubectl=1.23.3-00 kubeadm=1.23.3-00

启动kubelet并设置开机自启

systemctl enable --now kubelet

设置crictl(crictl 是 CRI 兼容的容器运行时命令行接口。 你可以使用它来检查和调试 Kubernetes 节点上的容器运行时和应用程序,用于设置连接容器runtime)

cat << EOF >> /etc/crictl.yaml
runtime-endpoint: unix:///var/run/containerd/containerd.sock
image-endpoint: unix:///var/run/containerd/containerd.sock
timeout: 10 
debug: false
EOF

以上所有节点都需运行
5、初始化集群(初始化失败后可以执行kubeadm reset恢复)

kubeadm init --kubernetes-version=v1.23.3 --apiserver-advertise-address 192.168.2.31 --image-repository registry.aliyuncs.com/google_containers  --pod-network-cidr 10.244.0.0/16

6、配置kubectl(主从节点都要配置,从节点对应目录下没有admin.conf,要从主节点拷贝)
不然会报The connection to the server localhost:8080 was refused - did you specify the right host or port?

echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
source ~/.bash_profile

7、检查master 初始化结果
coredns 将处于启动失败的状态(一直pending状态),完成 安装网络插件 这个步骤后,coredns 将正常启动。

# 只在 master 节点执行
 
# 执行如下命令,等待 3-10 分钟,直到所有的容器组处于 Running 状态
watch kubectl get pod -n kube-system -o wide
# 查看 master 节点初始化结果
kubectl get nodes -o wide

如果初始化之前出现api-server的6443端口一直connect refuse,可以参考:https://www.jb51.net/article/271492.html
8、安装网络插件(flannel)
查询很多安装方案,差不多都是通过:

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

这种方式首先会出现无法访问raw.githubusercontent.com问题:

The connection to the server raw.githubusercontent.com was refused - did you specify the right host or port?

网络问题可以通过:https://blog.csdn.net/qq_22409661/article/details/136274442 解决,但这并不能彻底解决问题
现有kube-flannel.yml将ns创建、serviceaccount创建、rbac申请绑定、configmap、deamonset资源创建一起执行,这样会出现一个问题: Failed to create SubnetManager: error retrieving pod spec for : the server doe…
可以通过https://blog.csdn.net/weixin_33963594/article/details/90335154
解决
先申请clusterrole 、clusterrolebinding、sa,然后再创建configmap和daemonset资源。
8、slave节点加入
获得join指令

# 只在 master 节点执行
kubeadm token create --print-join-command

在所有的slave节点执行master节点返回的join指令

# 替换为 master 节点上 kubeadm token create 命令的输出
kubeadm join 192.168.2.31:6443 --token mpfjma.4vjjg8flqihor4vt     --discovery-token-ca-cert-hash sha256:6f7a8e40a810323672de5eee6f4d19aa2dbdb38411845a1bf5dd63485c43d303

9、检查slave加入结果

# 只在 master 节点执行
kubectl get nodes -o wide
 # 都是Ready即可
  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Ubuntu 22.04上搭建Kubernetes集群,可以使用kubeadm工具进行快速部署。首先,需要准备好虚拟机,并确保每个节点的系统配置满足最低要求,如CPU核心不低于2个,RAM不低于2G。\[1\] 在开始之前,需要进行环境配置。可以使用以下命令来安装Docker和containerd作为容器运行时: ``` $ sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/docker.gpg ``` 接下来,可以使用kubeadm工具来部署Kubernetes集群。具体的安装步骤和配置文件可以在文章末尾的网盘中找到。\[1\] 请注意,从Kubernetes 1.24版本开始,Dockershim已从Kubernetes项目中移除,因此我们将使用containerd作为容器运行时。\[3\] 希望这些信息对您有帮助,如果您需要更详细的步骤和配置,请参考提供的引用内容。 #### 引用[.reference_title] - *1* [Ubuntu22.04部署Kubernetes集群(亲测可用)](https://blog.csdn.net/qq_43347021/article/details/129815123)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Ubuntu22.04部署K8S1.27.2版本集群](https://blog.csdn.net/sgj584520/article/details/130954363)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Ubuntu22.04搭建k8s集群,看这一篇就够啦!](https://blog.csdn.net/m0_43445928/article/details/130524917)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值