离线安装4:kubernetes(k8s)离线安装

这篇具有很好参考价值的文章主要介绍了离线安装4:kubernetes(k8s)离线安装。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文内容以语雀为准

说明

  1. 本文以 CentOS 7.9 最小化安装、kubernetes(k8s)1.25.3 为例(其他 CentOS、k8s 版本类似),离线包(免费下载):https://download.csdn.net/download/qq_32596527/87127488。
  2. 如果没有在有网的环境下安装 kubernetes(k8s)成功过,也不影响本文离线安装的阅读与学习。
  3. yum 包准备:可通过查阅 kubernetes(k8s)安装 文中的 yum install *** 命令在后面添加 --downloadonly --downloaddir=./下载的文件夹 下载到指定文件夹中获取,或者使用作者提供安装包。
  4. Docker 镜像准备:可通过学习 kubernetes(k8s)安装 安装成功后,使用命令 ctr -n=k8s.io image list 查询 k8s 安装成功后,当前使用的 Docker 镜像,使用命令 ctr -n=k8s.io image export 导出Docker镜像到磁盘的文件名 Docker镜像名
  5. Docer 镜像导入:ctr -n=k8s.io image Docker镜像导出到磁盘的文件名 Docker镜像名

准备

  1. 已整理的安装包:,下载所需的离线安装包。
  2. 将云盘中的软件安装包解压在一台没有网络的 CentOS 7.9 最小化安装的电脑上。
  3. 如果你的环境不是 CentOS 7.9 最小化安装,或者所需安装的 k8s、Docker、Containerd 的等版本不同时,可以根据下面的命令在有网的电脑上提前下载准备
    1. 准备 vim
sudo yum -y install vim --downloadonly --downloaddir=./vim
  1. 准备 wget(可忽略)
sudo yum -y install wget --downloadonly --downloaddir=./wget
  1. 准备 ntpdate(可忽略)
sudo yum -y install ntpdate --downloadonly --downloaddir=./ntpdate
  1. 准备 bash-completion(可忽略,推荐)
sudo yum -y install bash-completion --downloadonly --downloaddir=./bash-completion
  1. 准备 Docker、Containerd 安装前的依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2 --downloadonly --downloaddir=./docker-before
  1. 准备 Docker 安装包
sudo curl https://download.docker.com/linux/centos/docker-ce.repo > /etc/yum.repos.d/docker-ce.repo
sudo yum makecache
# sudo yum clean all && yum makecache
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin containerd --downloadonly --downloaddir=./docker
  1. 准备 k8s 安装包
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
# 是否开启本仓库
enabled=1
# 是否检查 gpg 签名文件
gpgcheck=0
# 是否检查 gpg 签名文件
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
sudo yum makecache
# sudo yum clean all && yum makecache
# yum --showduplicates list kubelet --nogpgcheck
# yum --showduplicates list kubeadm --nogpgcheck
# yum --showduplicates list kubectl --nogpgcheck
sudo yum install -y kubelet-1.25.3-0 kubeadm-1.25.3-0 kubectl-1.25.3-0 --disableexcludes=kubernetes --nogpgcheck --downloadonly --downloaddir=./k8s
  1. 准备 k8s 初始化 Docker 镜像包,准备 containerd 所需的 Docker 镜像包 pause
    1. k8s 1.25.3 所需 pause 的版本是 3.8
    2. 当前使用的 containerd 版本是 1.6.10(最新版,2022-11-22),containerd 1.6.10 所需的 pause 版本是 3.6
    3. 根据上面的描述,需要下载两个 pause 版本
    4. 可以使用 sudo containerd config default 查看当前 containerd 所需的 pause 版本。
    5. 如果要修改 containerd 使用的 pause 版本,可以在 /etc/containerd/config.toml 文件中将 pause 的版本与 k8s 设置成一样的。
    6. 默认安装时, /etc/containerd/config.toml 文件内容较少,并且配置不支持 k8s,需要使用 sudo containerd config default > /etc/containerd/config.toml重新生成配置文件。生成前请备份源文件。
# 在有网的电脑上安装 k8s 后,运行下列命令就可以获取到 k8s 初始化时所需的 docker 镜像了
kubeadm config images list

# k8s 1.25.3 执行结果如下
# registry.k8s.io/kube-apiserver:v1.25.3
# registry.k8s.io/kube-controller-manager:v1.25.3
# registry.k8s.io/kube-scheduler:v1.25.3
# registry.k8s.io/kube-proxy:v1.25.3
# registry.k8s.io/pause:3.8
# registry.k8s.io/etcd:3.5.4-0
# registry.k8s.io/coredns/coredns:v1.9.3
# 使用 Docker 拉取镜像:k8s 1.25.3 初始化所需 Docker 镜像如下

# 如果你的网络可以直接拉取 registry.k8s.io 域名下的包,则可以直接使用下列命令,并且可以节省操作 Docker 镜像标签的命令
# docker pull registry.k8s.io/kube-apiserver:v1.25.3
# docker pull registry.k8s.io/kube-controller-manager:v1.25.3
# docker pull registry.k8s.io/kube-scheduler:v1.25.3
# docker pull registry.k8s.io/kube-proxy:v1.25.3
# docker pull registry.k8s.io/pause:3.8
# containerd 所需
# docker pull registry.k8s.io/pause:3.6
# docker pull registry.k8s.io/etcd:3.5.4-0
# docker pull registry.k8s.io/coredns/coredns:v1.9.3

# 在这里我们使用阿里云Docker镜像来拉取上面的 Docker image
docker pull registry.aliyuncs.com/google_containers/kube-apiserver:v1.25.3
docker pull registry.aliyuncs.com/google_containers/kube-controller-manager:v1.25.3
docker pull registry.aliyuncs.com/google_containers/kube-scheduler:v1.25.3
docker pull registry.aliyuncs.com/google_containers/kube-proxy:v1.25.3
docker pull registry.aliyuncs.com/google_containers/pause:3.8
# containerd 所需
docker pull registry.aliyuncs.com/google_containers/pause:3.6
docker pull registry.aliyuncs.com/google_containers/etcd:3.5.4-0
docker pull registry.aliyuncs.com/google_containers/coredns:v1.9.3

docker images

# 将上述的 registry.aliyuncs.com 修改为 registry.k8s.io
docker tag registry.aliyuncs.com/google_containers/kube-apiserver:v1.25.3            registry.k8s.io/kube-apiserver:v1.25.3
docker tag registry.aliyuncs.com/google_containers/kube-scheduler:v1.25.3            registry.k8s.io/kube-scheduler:v1.25.3
docker tag registry.aliyuncs.com/google_containers/kube-controller-manager:v1.25.3   registry.k8s.io/kube-controller-manager:v1.25.3
docker tag registry.aliyuncs.com/google_containers/kube-proxy:v1.25.3                registry.k8s.io/kube-proxy:v1.25.3
docker tag registry.aliyuncs.com/google_containers/pause:3.8                         registry.k8s.io/pause:3.8
# containerd 所需
docker tag registry.aliyuncs.com/google_containers/pause:3.6                         registry.k8s.io/pause:3.6
docker tag registry.aliyuncs.com/google_containers/etcd:3.5.4-0                      registry.k8s.io/etcd:3.5.4-0
# 注意这里的名称为 coredns/coredns:v1.9.3 
docker tag registry.aliyuncs.com/google_containers/coredns:v1.9.3                    registry.k8s.io/coredns/coredns:v1.9.3

# 保存镜像到磁盘
docker save -o kube-apiserver-v1.25.3.tar            registry.k8s.io/kube-apiserver:v1.25.3
docker save -o kube-controller-manager-v1.25.3.tar   registry.k8s.io/kube-controller-manager:v1.25.3
docker save -o kube-scheduler-v1.25.3.tar            registry.k8s.io/kube-scheduler:v1.25.3
docker save -o kube-proxy-v1.25.3.tar                registry.k8s.io/kube-proxy:v1.25.3
docker save -o pause-3.8.tar                         registry.k8s.io/pause:3.8
# containerd 所需
docker save -o pause-3.6.tar                         registry.k8s.io/pause:3.6
docker save -o etcd-3.5.4-0.tar                      registry.k8s.io/etcd:3.5.4-0
docker save -o coredns-v1.9.3.tar                    registry.k8s.io/coredns/coredns:v1.9.3

# 将上述镜像复制到已安装 k8s、待初始化 k8s 的系统上

下面是 k8s 1.25.3 初始化所需要的 Docker 镜像包

  1. 准备 网络 calico 初始化 Docker 镜像包
    本文使用 calico 3.24.5,可以从下面链接中获取

如果要使用其他版本的 calico,请查看 calico.yaml 文件中的 calico/node、calico/cni、calico/kube-controllers 版本,下载对应的 Docker 镜像就可
不同 calico 支持的 k8s 版本不同,请查看 calico 与 k8s 版本的对应关系:https://www.yuque.com/xuxiaowei-com-cn/gitlab-k8s/orkd5pgmgpbrhqui
calico GitHub: https://github.com/projectcalico/calico/blob/v3.24.5/manifests/calico.yaml
calico GitCode 加速镜像: https://gitcode.net/mirrors/projectcalico/calico/-/raw/v3.24.5/manifests/calico.yaml

docker pull docker.io/calico/node:v3.24.5
docker pull docker.io/calico/cni:v3.24.5
docker pull docker.io/calico/kube-controllers:v3.24.5

docker images

docker save -o node-v3.24.5.tar                    docker.io/calico/node:v3.24.5
docker save -o cni-v3.24.5.tar                     docker.io/calico/cni:v3.24.5
docker save -o kube-controllers-v3.24.5.tar        docker.io/calico/kube-controllers:v3.24.5

安装

  1. 安装 vim
cd ./vim
yum -y localinstall *.rpm
# yum -y install *.rpm
cd ..
  1. 安装 wget(可忽略)
cd ./wget
yum -y localinstall *.rpm
# yum -y install *.rpm
cd ..
  1. 安装 ntpdate(可忽略)
cd ./ntpdate
yum -y localinstall *.rpm
# yum -y install *.rpm
cd ..
  1. 安装 bash-completion(可忽略,推荐)
cd ./bash-completion
yum -y localinstall *.rpm
# yum -y install *.rpm
source /etc/profile
cd ..
  1. 安装 Docker、Containerd 安装前的依赖
cd ./docker-before
yum -y localinstall *.rpm
# yum -y install *.rpm
cd ..
  1. 安装 Docker、Containerd
cd ./docker
yum -y localinstall *.rpm
# yum -y install *.rpm
cd ..

# 启动 docker 时,会启动 containerd
# sudo systemctl status containerd.service
sudo systemctl stop containerd.service

sudo cp /etc/containerd/config.toml /etc/containerd/config.toml.bak
sudo containerd config default > $HOME/config.toml
sudo cp $HOME/config.toml /etc/containerd/config.toml

# 由于是离线安装,提前准备了Docker镜像,所以此处不用修改 pause

# https://kubernetes.io/zh-cn/docs/setup/production-environment/container-runtimes/#containerd-systemd
# 确保 /etc/containerd/config.toml 中的 disabled_plugins 内不存在 cri
sudo sed -i "s#SystemdCgroup = false#SystemdCgroup = true#g" /etc/containerd/config.toml

sudo systemctl enable --now containerd.service
# sudo systemctl status containerd.service

# sudo systemctl status docker.service
sudo systemctl start docker.service
# sudo systemctl status docker.service
sudo systemctl enable docker.service
sudo systemctl enable docker.socket
sudo systemctl list-unit-files | grep docker

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://hnkfbj7x.mirror.aliyuncs.com"],
    "exec-opts": ["native.cgroupdriver=systemd"]
}
EOF

sudo systemctl daemon-reload
sudo systemctl restart docker
sudo docker info
sudo systemctl status docker.service
sudo systemctl status containerd.service
  1. 安装 k8s
# 设置所需的 sysctl 参数,参数在重新启动后保持不变
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF
# 应用 sysctl 参数而不重新启动
sudo sysctl --system
cd k8s
yum -y localinstall *.rpm
# yum -y install *.rpm
cd ..

systemctl daemon-reload
sudo systemctl restart kubelet
sudo systemctl enable kubelet
  1. 导入k8s 初始化时所需的Docker镜像
cd init-images

# 注意这里指定了命名空间为 k8s.io
ctr -n=k8s.io image import kube-apiserver-v1.25.3.tar
ctr -n=k8s.io image import kube-controller-manager-v1.25.3.tar
ctr -n=k8s.io image import kube-scheduler-v1.25.3.tar
ctr -n=k8s.io image import kube-proxy-v1.25.3.tar
ctr -n=k8s.io image import pause-3.8.tar
#  containerd 使用
ctr -n=k8s.io image import pause-3.6.tar
ctr -n=k8s.io image import etcd-3.5.4-0.tar
ctr -n=k8s.io image import coredns-v1.9.3.tar

ctr -n=k8s.io images list
ctr i list

cd ..
  1. 将主机名指向本机IP,主机名只能包含:字母、数字、-(横杠)、.(点)
    1. 获取主机名
hostname
  1. 临时设置主机名
hostname 主机名
  1. 永久设置主机名
sudo echo '主机名' > /etc/hostname
  1. 编辑 hosts
sudo vim /etc/hosts

控制面板:设置IP

当前机器的IP 	当前机器的主机名
  1. 关闭防火墙、或者开通指定端口
sudo systemctl stop firewalld.service 
sudo systemctl disable firewalld.service 
# 控制面板
firewall-cmd --zone=public --add-port=6443/tcp --permanent # Kubernetes API server	所有
firewall-cmd --zone=public --add-port=2379/tcp --permanent # etcd server client API	kube-apiserver, etcd
firewall-cmd --zone=public --add-port=2380/tcp --permanent # etcd server client API	kube-apiserver, etcd
firewall-cmd --zone=public --add-port=10250/tcp --permanent # Kubelet API	自身, 控制面
firewall-cmd --zone=public --add-port=10259/tcp --permanent # kube-scheduler	自身
firewall-cmd --zone=public --add-port=10257/tcp --permanent # kube-controller-manager	自身
firewall-cmd --zone=trusted --add-source=192.168.80.60 --permanent # 信任集群中各个节点的IP
firewall-cmd --zone=trusted --add-source=192.168.80.16 --permanent # 信任集群中各个节点的IP
firewall-cmd --add-masquerade --permanent # 端口转发
firewall-cmd --reload
firewall-cmd --list-all
firewall-cmd --list-all --zone=trusted

# 工作节点
firewall-cmd --zone=public --add-port=10250/tcp --permanent # Kubelet API	自身, 控制面
firewall-cmd --zone=public --add-port=30000-32767/tcp --permanent # NodePort Services†	所有
firewall-cmd --zone=trusted --add-source=192.168.80.60 --permanent # 信任集群中各个节点的IP
firewall-cmd --zone=trusted --add-source=192.168.80.16 --permanent # 信任集群中各个节点的IP
firewall-cmd --add-masquerade --permanent # 端口转发
firewall-cmd --reload
firewall-cmd --list-all
firewall-cmd --list-all --zone=trusted
  1. 关闭交换空间
sudo swapoff -a
sudo sed -i 's/.*swap.*/#&/' /etc/fstab
  1. k8s 初始化
# 由于导入的 Docker 镜像已经修改为原始的名称,故此处初始化无需增加 --image-repository=registry.aliyuncs.com/google_containers
kubeadm init
# 指定集群的IP
# kubeadm init --image-repository=registry.aliyuncs.com/google_containers --apiserver-advertise-address=192.168.80.60

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

kubectl cluster-info

# 初始化失败后,可进行重置,重置命令:kubeadm reset

# 执行成功后,会出现类似下列内容:
# kubeadm join 192.168.80.60:6443 --token f9lvrz.59mykzssqw6vjh32 \
# --discovery-token-ca-cert-hash sha256:4e23156e2f71c5df52dfd2b9b198cce5db27c47707564684ea74986836900107 	
  1. 网络初始化
    下载 calico.yaml 文件,复制到电脑上
    calico GitHub: https://github.com/projectcalico/calico/blob/v3.24.5/manifests/calico.yaml

calico GitCode 加速镜像: https://gitcode.net/mirrors/projectcalico/calico/-/raw/v3.24.5/manifests/calico.yaml文章来源地址https://www.toymoban.com/news/detail-442426.html

cd calico
ctr -n=k8s.io image import node-v3.24.5.tar
ctr -n=k8s.io image import cni-v3.24.5.tar
ctr -n=k8s.io image import kube-controllers-v3.24.5.tar
cd ..
# 增加 DNS
vim /etc/resolv.conf
# 没有DNS时随便写一个
nameserver 192.168.10.1
kubectl apply -f calico.yaml
  1. 查看集群
kubectl get pods --all-namespaces -o wide
kubectl get nodes -o wide
  1. 关于去污、创建实例、其他命令,参见kubernetes(k8s)安装

到了这里,关于离线安装4:kubernetes(k8s)离线安装的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • k8s 安装 kubernetes安装教程 虚拟机安装k8s centos7安装k8s kuberadmin安装k8s k8s工具安装 k8s安装前配置参数

    k8s采用master, node1, node2 。三台虚拟机安装的一主两从,机器已提前安装好docker。下面是机器配置,k8s安装过程,以及出现的问题与解决方法   虚拟机全部采用静态ip, master 30机器, node1 31机器, node2 32机器                                        机器ip 192.168.

    2024年02月11日
    浏览(50)
  • Flink K8S Operator 离线安装

    2.1 添加helm仓库 2.2 安装 chart 如果报如下错误: 则需要添加 --set webhook.create=false 参数

    2024年03月16日
    浏览(38)
  • Ubuntu 使用Kubeadm 离线安装k8s

    K8S离线部署的方案 离线包,自己可以跟着下面步骤自己下载。 https://download.csdn.net/download/u010952056/86748944 万字长文详解 PaaS toB 场景下 K8s 离线部署方案 Item Language 离线部署支持情况 kops Golang 不支持 kubespray Ansible 支持,需自行构建安装包 kubeasz Ansible 支持,需自行构建安装包

    2024年02月05日
    浏览(49)
  • 麒麟 V10 离线 安装 k8s 和kuboard

    目录 安装文件准备 主机准备 主机配置 修改主机名(三个节点分别执行) 配置hosts(所有节点) 关闭防火墙、selinux、swap、dnsmasq(所有节点) 安装依赖包(所有节点) 系统参数设置(所有节点) 时间同步(所有节点) 配置ipvs功能(所有节点) 安装docker(所有节点) 卸载老版本 安装

    2024年04月13日
    浏览(72)
  • K8s集群离线安装-kubeadm-详细篇

    1、部署k8s的两种方式:kubeadm 和二进制源码安装 2、环境准备 名称 IP master 192.168.32.128 node1 192.168.32.129 node2 192.168.32.130 repo 192.168.32.131 3、下载安装包至本地 4、将安装包拷贝至本地并制作yum源 ## 5、初始化配置 5.1、安装环境准备:下面的操作需要在所有的节点上执行。 5.2、安

    2024年02月02日
    浏览(44)
  • kubekey 离线安装harbor、k8s、kubesphere

    目录 参考文献 了解kubekey  英文和中文 前提条件 部署准备 下载kubukey 离线包配置和制作 配置离线包 制作离线包 离线安装集群 复制KubeKey 和制品 artifact到离线机器 创建初始换、安装配置文件  安装镜像仓库harbor 初始化harbor 项目 修改配置文件 安装k8s集群和kubesphere 手动安装

    2024年04月11日
    浏览(53)
  • Kubernetes(K8S) kubesphere 安装

    安装KubeSphere最好的方法就是参考官方文档,而且官方文档是中文的。 官网地址:https://kubesphere.com.cn/ https://github.com/kubesphere/kubesphere/blob/master/README_zh.md Kubernetes(K8S) kubesphere 介绍 安装提前条件: 使用 Kubeadm 部署 Kubernetes(K8S) 安装--附K8S架构图 使用 Kubeadm 部署 Kubernetes(K8S) 安装

    2024年02月01日
    浏览(97)
  • Kubernetes(k8s)集群安装部署

    名称 IP 系统 配置 主控节点 192.168.202.101 CentOS 7.9.2009 2核4G 工作节点1 192.168.202.102 CentOS 7.9.2009 2核4G 工作节点2 192.168.202.103 CentOS 7.9.2009 2核4G 2.1 升级操作系统内核 导入elrepo gpg key 安装elrepo YUM源仓库 安装kernel-ml版本,ml为长期稳定版本,lt为长期维护版本 设置grub2默认引导为0 重

    2024年02月10日
    浏览(80)
  • kubernetes(k8s) 安装与部署

    版本:kubernetes(k8s) v1.28.2 并准备主机名映射。 设置好静态IP。 在Ubuntu的/etc/hosts文件中,填入如下内容。也可以在Windows的C:WindowsSystem32driversetchosts文件中填写相同内容。 关闭防火墙和SELinux。 关闭防火墙命令如下。 可使用命令 systemctl status firewalld 查看防火墙状态。 关闭

    2024年02月03日
    浏览(64)
  • kubernetes(k8s)安装详细教程

    闲来无事,搭一个k8s集群玩玩 最近一次搭建:全过程耗时1.5H 新建3个虚拟机,详情见:虚拟机新建 主机硬件配置说明 最低要求:2c2g 需求 CPU 内存 硬盘 角色 主机名 值 4C 8G 100GB master master01 值 4C 8G 100GB worker(node) worker01 值 4C 8G 100GB worker(node) worker02 由于本次使用3台主机完成

    2024年02月06日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包