Linux上离线安装Kubernetes linux离线安装docker教程

Linux上离线安装Kubernetes linux离线安装docker教程

解决方案goocz2024-12-24 12:17:4621A+A-

1. 准备工作

  • 确保每台机器至少有2GB RAM,控制平面机器至少有2个CPU核心。
  • 所有机器之间需要网络连通性。
  • 确保每台机器的hostname、MAC地址和product_uuid是唯一的。
  • 某些端口需要开放,具体请查看官方文档。
  • 禁用或配置交换分区(swap),因为kubelet默认在检测到交换分区时无法启动。

2. 离线文件准备

  • 准备kubeadm、kubelet和kubectl的二进制文件。
  • 准备容器运行时(如containerd、CRI-O或Docker)的二进制文件。(见安装容器运行时部分)
  • 准备CNI插件(如flannel、calico等)的二进制文件。(从网络插件部分里获取镜像地址,然后下载和导出)
  • 准备kubeadm-config.yaml配置文件,该文件用于初始化集群时的配置。
# 主要文件:10-kubeadm.conf  kubeadm  kubeadm-config.yaml  kubectl  kubelet  kubelet.service images
# images: coredns.tgz  flannel-cni-plugin.tgz  flannel.tgz  kube-proxy.tgz  pause.tgz
DOWNLOAD_DIR="/usr/local/bin"
sudo mkdir -p "$DOWNLOAD_DIR"

# 下载 kubeadm、kubelet、kubectl ,参考https://kubernetes.io/zh-cn/docs/setup/production-environment/tools/kubeadm/install-kubeadm/#installing-kubeadm-kubelet-and-kubectl
RELEASE="$(curl -sSL https://dl.k8s.io/release/stable.txt)"
ARCH="amd64"
cd $DOWNLOAD_DIR
sudo curl -L --remote-name-all https://dl.k8s.io/release/${RELEASE}/bin/linux/${ARCH}/{kubeadm,kubelet}
sudo chmod +x {kubeadm,kubelet}

RELEASE_VERSION="v0.16.2"
curl -sSL "https://raw.githubusercontent.com/kubernetes/release/${RELEASE_VERSION}/cmd/krel/templates/latest/kubelet/kubelet.service" | sed "s:/usr/bin:${DOWNLOAD_DIR}:g" | sudo tee $DOWNLOAD_DIR/kubelet.service
sudo mkdir -p /usr/lib/systemd/system/kubelet.service.d
curl -sSL "https://raw.githubusercontent.com/kubernetes/release/${RELEASE_VERSION}/cmd/krel/templates/latest/kubeadm/10-kubeadm.conf" | sed "s:/usr/bin:${DOWNLOAD_DIR}:g" | sudo tee $DOWNLOAD_DIR/10-kubeadm.conf

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"


# 下载离线镜像
# master image:
# node image: coredns.tgz  flannel-cni-plugin.tgz  flannel.tgz  kube-proxy.tgz  pause.tgz
kubeadm config images list
kubeadm config images pull
# 导出离线镜像
docker save registry.k8s.io/pause:3.10 |gzip > pause.tgz
...
# 把导出的镜像放在对应的节点上导入
docker load -i pause.tgz

3. 安装容器运行时

以containerd为例,您需要下载并安装containerd的二进制文件,并配置为系统服务启动。

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

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

# 关防火墙、selinux、swap

# 安装containerd
# 主要文件:cni-plugins-linux-amd64-v1.5.1.tgz  config.toml  containerd-1.7.21-linux-amd64.tar.gz  containerd.service  nerdctl-1.7.6-linux-amd64.tar.gz  runc
# 参考https://github.com/containerd/containerd/blob/main/docs/getting-started.md
# 生成默认配置文件
mkdir -p /etc/containerd
containerd config default > /etc/containerd/config.toml

# 配置 systemd cgroup 驱动
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
  ...
  [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
    SystemdCgroup = true
    
# 重载沙箱(pause)镜像
[plugins."io.containerd.grpc.v1.cri"]
  sandbox_image = "registry.k8s.io/pause:3.2"
  
# 兼容docker格式的cli,https://github.com/containerd/nerdctl?tab=readme-ov-file

4. 二进制安装kubeadm、kubelet和kubectl

  • 把上面下载好的kubeadm、kubelet和kubectl的二进制文件到指定目录(如/usr/local/bin)。
  • 赋予执行权限并移动到系统路径中。
sudo curl -L --remote-name-all https://dl.k8s.io/release/${RELEASE}/bin/linux/${ARCH}/{kubeadm,kubelet,kubectl}
sudo chmod +x {kubeadm,kubelet,kubectl}
sudo mv {kubeadm,kubelet,kubectl} /usr/local/bin/

5. 初始化集群

使用kubeadm init命令和kubeadm-config.yaml配置文件初始化集群。

sudo kubeadm init --config=kubeadm-config.yaml

6. 安装网络插件

以flannel为例,您需要在集群中部署网络插件。

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

7. 验证集群状态

使用kubectl命令检查集群状态。

kubectl get nodes
kubectl get pods --all-namespaces

以上步骤涵盖了使用kubeadm安装Kubernetes集群的全过程,包括离线文件准备、二进制安装方式、安装容器运行时、利用kubeadm-config.yaml初始化集群以及安装网络插件等关键步骤。请根据您的具体环境和需求调整配置和步骤。

点击这里复制本文地址 以上内容由goocz整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

果子教程网 © All Rights Reserved.  蜀ICP备2024111239号-5