K8S-1.33.1 - 阿里云ubuntu24.04 -k8s集群25年最新版安装文档

阿里云Ubuntu24.04安装K8S集群最新指南

k8s-阿里云ubuntu24.04-cri-docker容器运行时

一.所有机器系统环境准备

1.购买服务器

购买了8c16g 三台服务器

172.31.0.61

172.31.1.61

172.31.2.61
云服务器很难做多主节点的k8s集群,主控制平面节点负载均衡并无较好的解决方案
https://help.aliyun.com/zh/vpc/user-guide/highly-available-virtual-ip-address-havip

以下内容除非特殊说明,默认三台机器都要做的

1.apt更新

vi /etc/apt/sources.list

在最后

添加如下内容:

deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse

再执行:

apt update
apt upgrade

之后执行确定

1.DNS设置

https://help.aliyun.com/zh/ecs/user-guide/how-do-i-customize-the-dns-settings-of-a-linux-instance

阿里云为 ECS 实例提供高可用、高性能的默认 DNS 服务器(IP 地址为 100.100.2.136 和 100.100.2.138),该服务由阿里云自动维护,您无需为ECS实例进行额外配置。

请注意,阿里云默认的DNS服务器可以解析阿里云服务的内网域名,如果删除默认DNS服务器,会导致ECS实例无法访问一系列服务,例如OSS Bucket内网域名等。建议您将自定义的DNS服务器地址放在阿里云默认DNS服务器地址前(越前优先级越高),将阿里云默认DNS服务器作为备选DNS服务器。

2.关闭自动更新

systemctl stop unattended-upgrades
systemctl disable unattended-upgrades
apt remove unattended-upgrades

3.启用ipv4数据包转发

默认情况下,Linux 内核不允许 IPv4 数据包在接口之间路由。 大多数 Kubernetes 集群网络实现都会更改此设置(如果需要),但有些人可能希望管理员为他们执行此操作。 (有些人可能还期望设置其他 sysctl 参数、加载内核模块等;请参阅你的特定网络实施的文档。)

# 设置所需的 sysctl 参数,参数在重新启动后保持不变
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.ipv4.ip_forward = 1
EOF

# 应用 sysctl 参数而不重新启动
sudo sysctl --system

#使用以下命令验证 net.ipv4.ip_forward 是否设置为 1:
sysctl net.ipv4.ip_forward

4.交换分区

阿里云上Ubuntu系统已经禁止了交换分区、包括使用systemd作为cgroupfs 驱动、关闭防火墙、安全组内配置端口互通、配置apt阿里镜像源、DNS设置,都不用做

5.host配置

官方文档中提到了“节点之中不可以有重复的主机名、MAC 地址或 product_uuid”

#设置主机名及host
#172.31.0.61执行:
hostnamectl set-hostname k8s-ubuntu-prd-master01 && bash
#172.31.1.61执行
hostnamectl set-hostname k8s-ubuntu-prd-node01 && bash
#172.31.2.61执行
hostnamectl set-hostname k8s-ubuntu-prd-node02 && bash
#所有机器添加master域名映射,以下需要修改为自己的
echo "172.31.0.61 cluster-endpoint" >> /etc/hosts

至此,所有系统环境准备完成,剩下的就是安装软件

二.下载准备

1.docker-engine

进入https://docs.docker.com/engine/install/ubuntu/

选择从package包安装

依照教程:

#进入
https://download.docker.com/linux/ubuntu/dists/

#选择版本,我们是Ubuntu24.04
/noble/pool/stable/amd64/
#进入下载最新版

#我这里选择下载
containerd.io_1.7.27-1_amd64.deb
docker-ce_28.2.2-1~ubuntu.24.04~noble_amd64.deb
docker-ce-cli_28.2.2-1~ubuntu.24.04~noble_amd64.deb
docker-buildx-plugin_0.24.0-1~ubuntu.24.04~noble_amd64.deb
docker-compose-plugin_2.36.2-1~ubuntu.24.04~noble_amd64.deb

#在各台机器上执行
mkdir -p /app/k8s/docker

#进入目录,上传下载的deb包
#之后执行
dpkg -i containerd.io_1.7.27-1_amd64.deb docker-ce_28.2.2-1~ubuntu.24.04~noble_amd64.deb docker-ce-cli_28.2.2-1~ubuntu.24.04~noble_amd64.deb docker-buildx-plugin_0.24.0-1~ubuntu.24.04~noble_amd64.deb docker-compose-plugin_2.36.2-1~ubuntu.24.04~noble_amd64.deb

#查看docker状态
systemctl status docker.service

阿里docker镜像加速地址通过如下链接查看

https://cr.console.aliyun.com/cn-shanghai/instances/mirrors

阿里云无法拉取calico镜像,故添加https://docker.m.daocloud.io镜像加速地址

#更改docker配置
vi /etc/docker/daemon.json

#输入如下配置,注意如果max-size不等于10m,会和k8s默认10m最大日志冲突,会不断刷出报错日志:
{
  "registry-mirrors": ["https://ihsxva0f.mirror.aliyuncs.com","https://docker.m.daocloud.io","https://registry.docker-cn.com"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  },
  "storage-driver": "overlay2"
}

#重新启动
systemctl daemon-reload
systemctl restart docker

关于私有镜像仓库

https://cr.console.aliyun.com/cn-shanghai/instance/dashboard
后续我会经常用到私有仓库,注意registry-vpc.cn-shanghai.aliyuncs.com/tcc_repo/是我自己的内网仓库,实际使用中应该替换为你们个人的仓库
在这里插入图片描述

#私网登录镜像仓库
docker login --username=**** registry-vpc.cn-shanghai.aliyuncs.com
****

2.cri-docker

最终我们进入GitHub-releases页面:

https://github.com/Mirantis/cri-dockerd/releases

#选择下载
cri-dockerd-0.3.18.amd64.tgz

#在各台机器上执行
mkdir -p /app/k8s/cri-docker

#进入目录,上传下载的tgz包

#执行
tar xf cri-dockerd-0.3.18.amd64.tgz

#拷贝解压后的文件到/usr/bin目录下
cp cri-dockerd/cri-dockerd /usr/bin/

#测试
cri-dockerd --version

接下来我们需要建立一个cri-dockerd服务、开机自启;另外我们需要pause:3.10沙箱

#我们使用谷歌镜像手动拉取pause镜像
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.10

#列出当前镜像
docker images 

#为pause:3.10打tag,之后推到我们自己的私有镜像仓库上
docker tag 873ed7510279 registry-vpc.cn-shanghai.aliyuncs.com/tcc_repo/pause:3.10
docker push  registry-vpc.cn-shanghai.aliyuncs.com/tcc_repo/pause:3.10

https://github.com/Mirantis/cri-dockerd/tree/master/packaging/systemd

接下来新建vi /etc/systemd/system/cri-docker.service

添加如下内容:

[Unit]
Description=CRI Interface for Docker Application Container Engine
Documentation=https://docs.mirantis.com
After=network-online.target firewalld.service docker.service
Wants=network-online.target
Requires=cri-docker.socket
 
[Service]
Type=notify
ExecStart=/usr/bin/cri-dockerd --pod-infra-container-image=registry-vpc.cn-shanghai.aliyuncs.com/tcc_repo/pause:3.10 --network-plugin=cni --cni-conf-dir=/etc/cni/net.d --cni-bin-dir=/opt/cni/bin --container-runtime-endpoint=unix:///var/run/cri-dockerd.sock --cri-dockerd-root-directory=/var/lib/dockershim --docker-endpoint=unix:///var/run/docker.sock --cri-dockerd-root-directory=/var/lib/docker
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process
[Install]
WantedBy=multi-user.target

vi /etc/systemd/system/cri-docker.socket

添加如下内容:

[Unit]
Description=CRI Docker Socket for the API
PartOf=cri-docker.service
 
[Socket]
ListenStream=/var/run/cri-dockerd.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker
 
[Install]
WantedBy=sockets.target

systemctl daemon-reload
systemctl enable cri-docker.service
systemctl enable cri-docker.socket
systemctl restart cri-docker.service
ls  /var/run | grep docker

3.安装kubeadm

https://kubernetes.io/zh-cn/docs/setup/production-environment/tools/kubeadm/install-kubeadm/

#安装使用 Kubernetes apt 仓库所需要的包:
apt install -y apt-transport-https ca-certificates curl gpg

# 如果 `/etc/apt/keyrings` 目录不存在,则应在 curl 命令之前创建它,请阅读下面的注释。
# sudo mkdir -p -m 755 /etc/apt/keyrings
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.33/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg


# 此操作会覆盖 /etc/apt/sources.list.d/kubernetes.list 中现存的所有配置。
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.33/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
apt update
apt install -y kubelet kubeadm kubectl
apt-mark hold kubelet kubeadm kubectl

4.拉取所需镜像

参考

https://kubernetes.io/zh-cn/docs/reference/setup-tools/kubeadm/kubeadm-init/#without-internet-connection

#查看需要哪些镜像
kubeadm config images list

#输出结果如下
registry.k8s.io/kube-apiserver:v1.33.1
registry.k8s.io/kube-controller-manager:v1.33.1
registry.k8s.io/kube-scheduler:v1.33.1
registry.k8s.io/kube-proxy:v1.33.1
registry.k8s.io/coredns/coredns:v1.12.0
registry.k8s.io/pause:3.10
registry.k8s.io/etcd:3.5.21-0

#我们无法直接拉取这些所需镜像
Ubuntu 22.04 系统上使用 Minikube 安装 Kubernetes 集群,可按以下步骤操作: ### 安装 Minikube 使用以下命令下载 Minikube: ```bash curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 ``` 接着,使用 `sudo install` 命令将其安装到 `/usr/local/bin/minikube`: ```bash sudo install minikube-linux-amd64 /usr/local/bin/minikube ``` 此步骤参考了在 Ubuntu 22.04 上使用 Minikube 部署 Go 应用到 Kubernetes 的相关安装过程[^1]。 ### 处理可能的链接问题 若之前已安装了 kubectl、kubeadm,当遇到相关报错时,需要将安装好的命令链接到 minikube 目录。从报错信息可知要链接的目录是 `/home/用户名/.minikube/cache/linux/amd64/v1.30.0/`,执行以下软连接命令: ```bash ln -s /usr/bin/kubeadm /home/用户名/.minikube/cache/linux/amd64/v1.30.0/kubeadm ln -s /usr/bin/kubectl /home/用户名/.minikube/cache/linux/amd64/v1.30.0/kubectl ln -s /usr/bin/kubelet /home/用户名/.minikube/cache/linux/amd64/v1.30.0/kubelet ``` 此操作参考了 VirtualBox 中 Ubuntu - 22.04 下用国内源安装 minikube1.33.1 的相关内容[^2]。 ### 验证安装 使用 `minikube kubectl – get pods -A` 命令验证安装情况,示例输出如下: ```plaintext NAMESPACE NAME READY STATUS RESTARTS AGE kube-system coredns-65c54cc984-vgbwd 1/1 Running 0 21s kube-system etcd-minikube 1/1 Running 0 35s kube-system kube-apiserver-minikube 1/1 Running 0 33s kube-system kube-controller-manager-minikube 1/1 Running 0 33s kube-system kube-proxy-2jjcm 1/1 Running 0 22s kube-system kube-scheduler-minikube 1/1 Running 0 33s kube-system storage-provisioner 1/1 Running 0 32s ``` 此验证步骤参考了 Minikube 在 Ubuntu 22.04 系统中的使用情况[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值