ubuntu 24.04 安装 k8s 1.28
以下是在 Ubuntu 上安装 Kubernetes (k8s) 1 主 2 node 集群的详细步骤:
虚拟机配置
1. 检查 Netplan 配置文件
确保你的 Netplan 配置文件(通常位于 /etc/netplan/
目录下,例如 01-netcfg.yaml
)内容正确。以下是一个正确的静态 IP 配置示例:
yaml复制
network:
version: 2
ethernets:
enp0s5:
addresses:
- 192.168.1.100/24
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
2. 应用 Netplan 配置
运行以下命令重新应用 Netplan 配置:
bash复制
sudo netplan apply
3. 检查网络服务状态
运行以下命令检查网络服务的状态:
bash复制
sudo systemctl status systemd-networkd
如果服务未运行,可以尝试重启它:
bash复制
sudo systemctl restart systemd-networkd
4.配置时区
要将Ubuntu的时区设置为北京时间(中国标准时间,CST),可以按照以下步骤进行:
timedatectl
是一个用于管理系统时间和时区的命令行工具。
- 列出可用的时区:您可以列出所有可用的时区以确认时区名称:
timedatectl list-timezones | grep Shanghai
您应该会看到Asia/Shanghai
,这就是北京时间。
- 设置时区为
Asia/Shanghai
:使用以下命令将时区设置为北京时间:
sudo timedatectl set-timezone Asia/Shanghai
- 验证时区设置:确认时区已正确设置:
timedatectl
输出中应该显示Time zone: Asia/Shanghai
。
环境准备
- 准备三台 Ubuntu 服务器:
- 1 台主节点(Master)
- 2 台工作节点(Worker)
- 确保所有节点可以互相通信,关闭防火墙和 SELinux(Ubuntu 默认没有 SELinux)。
- 配置主机名和 hosts 文件(在所有节点上执行):
bash复制
# 设置主机名
hostnamectl set-hostname <node-name> # 例如:k8s-master, k8s-node1, k8s-node2
# 修改 /etc/hosts 文件
cat >> /etc/hosts << EOF
<master-ip> k8s-master
<node1-ip> k8s-node1
<node2-ip> k8s-node2
EOF
- 关闭防火墙和 Swap(在所有节点上执行):
bash复制
# 关闭防火墙
sudo systemctl stop ufw
sudo systemctl disable ufw
# 关闭 Swap
sudo swapoff -a
sudo sed -i '/swap/d' /etc/fstab
- 配置网络设置(在所有节点上执行):
bash复制
# 添加 sysctl 配置
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
vm.swappiness = 0
EOF
# 加载模块并应用配置
sudo modprobe br_netfilter
sudo sysctl --system
- 时间同步(在所有节点上执行):
bash复制
sudo apt install -y chrony
sudo systemctl start chrony
sudo systemctl enable chrony
apt 源替换成 阿里云
在 Ubuntu 24.04 中,软件源配置文件的路径已经从传统的 /etc/apt/sources.list
变更为 /etc/apt/sources.list.d/ubuntu.sources
。以下是将 Ubuntu 24.04 的镜像源更换为阿里云镜像源的步骤:
步骤 1:备份原有的 ubuntu.sources
文件
在进行任何修改之前,建议先备份原有的 ubuntu.sources
文件:
bash复制
sudo cp /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources.bak
步骤 2:编辑 ubuntu.sources
文件
使用文本编辑器(如 nano
或 vim
)打开 /etc/apt/sources.list.d/ubuntu.sources
文件:
bash复制
sudo nano /etc/apt/sources.list.d/ubuntu.sources
步骤 3:替换为阿里云的镜像源
将文件内容替换为以下内容:
plaintext复制
Types: deb
URIs: http://mirrors.aliyun.com/ubuntu/
Suites: noble noble-updates noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
步骤 4:保存并退出
在 nano
编辑器中,按 Ctrl + O
保存文件,然后按 Ctrl + X
退出。
步骤 5:更新软件源
运行以下命令更新软件源:
bash复制
sudo apt update
步骤 6:验证镜像源
运行以下命令查看当前使用的镜像源:
bash复制
cat /etc/apt/sources.list.d/ubuntu.sources
你应该会看到阿里云的镜像源地址。
步骤 7:升级软件包(可选)
如果你希望升级系统中的软件包,可以运行以下命令:
bash复制
sudo apt upgrade
通过以上步骤,你已经成功将 Ubuntu 24.04 的镜像源更换为阿里云的镜像源。这将提高软件更新和安装的速度,特别是在中国大陆地区。
注意 arm 架构
根据你的描述,你在使用 Ubuntu 24.04 的 arm64 架构时,发现使用自带的镜像源可以正常 update
,但替换成清华和阿里云的镜像源后出现了问题。这可能是由于镜像源的路径或配置不正确导致的。
解决方法
1. 检查镜像源路径
对于 arm64 架构,清华和阿里云的镜像源路径需要特别处理。你需要在 URI 中添加 -ports
后缀。以下是正确的配置:
清华源
plaintext复制
Types: deb
URIs: http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/
Suites: noble noble-updates noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
阿里云源
plaintext复制
Types: deb
URIs: http://mirrors.aliyun.com/ubuntu-ports/
Suites: noble noble-updates noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
2. 修改 /etc/apt/sources.list.d/ubuntu.sources
文件
将 /etc/apt/sources.list.d/ubuntu.sources
文件内容替换为上述配置之一。例如,使用清华源:
bash复制
sudo nano /etc/apt/sources.list.d/ubuntu.sources
将文件内容替换为:
plaintext复制
Types: deb
URIs: http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/
Suites: noble noble-updates noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
保存并退出。
3. 更新软件源
运行以下命令更新软件源:
bash复制
sudo apt update
4. 验证镜像源
运行以下命令查看当前使用的镜像源:
bash复制
cat /etc/apt/sources.list.d/ubuntu.sources
你应该会看到清华源或阿里云源的地址。
5. 升级软件包(可选)
如果你希望升级系统中的软件包,可以运行以下命令:
bash复制
sudo apt upgrade
其他建议
- 检查网络连接:确保你的网络连接正常,可以访问外部网站。
- 清理缓存:运行
sudo apt clean
清理缓存,然后重新更新软件源。 - 检查系统版本:确保你的系统版本是 Ubuntu 24.04,可以运行
lsb_release -a
查看系统版本信息。
如果问题仍然存在,可以尝试访问其他镜像源,或者检查清华和阿里云镜像源的官方文档,了解是否支持你的系统版本和架构。
开始安装
在国内安装Kubernetes时,由于网络限制,可能无法直接访问外网资源。以下是适用于国内环境的安装指南:
1. 更新系统
首先,确保系统软件包是最新的:
sudo apt update
sudo apt upgrade -y
2. 安装必要的依赖
安装apt-transport-https
、ca-certificates
和curl
:
sudo apt install -y apt-transport-https ca-certificates curl
3. 添加Kubernetes的APT源
导入阿里云的GPG密钥:
curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
添加阿里云的Kubernetes APT源:
cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
4. 更新APT包索引
sudo apt update
这个警告是因为APT正在逐步弃用将密钥存储在/etc/apt/trusted.gpg
文件中的做法。为了消除这个警告,我们需要将密钥移到/etc/apt/trusted.gpg.d/
目录中,并确保它是以二进制格式存储的。以下是解决方法:
解决方法
- 删除旧的密钥:首先,删除旧的密钥:
sudo apt-key del B53DC80D13EDEF05
- 重新添加密钥到正确的位置:使用
gpg --dearmor
将密钥转换为二进制格式并存储在/etc/apt/trusted.gpg.d/
目录中:
curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/kubernetes-aliyun.gpg > /dev/null
- 更新APT包索引:重新运行
apt update
以确保警告消失:
sudo apt update
结论
通过以上步骤,您应该能够解决这个警告。确保密钥文件是二进制格式的.gpg
文件,并存储在/etc/apt/trusted.gpg.d/
目录中,以便APT能够正确识别和使用它。这样做不仅符合APT的最新建议,还能避免将来可能的兼容性问题。
5. 安装Kubernetes组件
安装kubelet
、kubeadm
和kubectl
:
sudo apt install -y kubelet kubeadm kubectl
确保这些包不会被自动更新:
sudo apt-mark hold kubelet kubeadm kubectl
6. 禁用交换分区
Kubernetes要求禁用交换分区:
sudo swapoff -a
为了永久禁用交换,编辑/etc/fstab
文件并注释掉任何交换分区的行。
如果所有节点都显示为Ready
,则说明Kubernetes集群已成功安装并运行。
在Kubernetes集群中,某些步骤需要在所有节点上执行,而其他步骤仅在主节点或工作节点上执行。以下是详细的步骤说明:
1. 在所有节点上执行
安装必要的依赖
在所有节点上安装apt-transport-https
、ca-certificates
和curl
:
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl
添加Kubernetes的APT源
在所有节点上添加阿里云的Kubernetes APT源:
curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/kubernetes-aliyun.gpg > /dev/null
cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
sudo apt update
安装Kubernetes组件
在所有节点上安装kubelet
、kubeadm
和kubectl
:
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
安装并配置containerd
在所有节点上安装并配置containerd:
sudo apt install -y containerd
sudo mkdir -p /etc/containerd
sudo containerd config default | sudo tee /etc/containerd/config.toml
### 注意 registry.aliyuncs.com/google_containers/pause:3.9
sudo systemctl restart containerd
sudo systemctl enable containerd
禁用交换分区
在所有节点上禁用交换分区:
sudo swapoff -a
编辑/etc/fstab
文件,注释掉任何交换分区的行以永久禁用。
2. 在主节点上执行
初始化Kubernetes集群
在主节点上初始化Kubernetes集群:
sudo kubeadm init --image-repository registry.aliyuncs.com/google_containers
完成后,按照输出中的指示配置kubectl
:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
部署网络插件
在主节点上部署网络插件(以Calico为例):
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
3. 在工作节点上执行
加入Kubernetes集群
在每个工作节点上,使用kubeadm join
命令加入集群。该命令在初始化主节点时会输出,类似于:
kubeadm join <master-ip>:<port> --token <token> --discovery-token-ca-cert-hash sha256:<hash>
4. 验证集群状态
在主节点上,检查节点状态:
kubectl get nodes
如果所有节点都显示为Ready
,则说明Kubernetes集群已成功安装并运行。
通过以上步骤,您应该能够在所有节点上正确安装和配置Kubernetes集群。请根据您的具体需求选择合适的网络插件和配置。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构