【k8s】(四)kubernetes1.29.4离线部署之-组件安装

(一)kubernetes1.29.4离线部署之-安装文件准备
(二)kubernetes1.29.4离线部署之-镜像文件准备
(三)kubernetes1.29.4离线部署之-环境初始化
(四)kubernetes1.29.4离线部署之-组件安装
(五)kubernetes1.29.4离线部署之-初始化第一个控制平面
(六)kubernetes1.29.4离线部署之-加入Node节点
(七)kubernetes1.29.4离线部署之-网络插件
(八)kubernetes1.29.4离线部署之-测试验证

备注: 完整版请参阅 【k8s】Kubernetes 1.29.4离线安装部署(总)

组件安装

需要安装的组件列表
  1. 安装containerd
  2. 部署containerd 配置文件
  3. 安装cni plugin
  4. 安装crictl
  5. 安装runc
  6. 安装部署kubeadm、kubelet、kubectl

特别关注:
再拷贝kubeadm、kubelet、kubectl文件后,务必记得要创建必须要的几个目录,否则会导致后面初始化控制平面时会出错,详情见完整的安装脚本
sudo mkdir -p /var/lib/kubelet
sudo mkdir -p /etc/kubernetes/manifests
yum 自动从网络安装不会出现该问题,会自动创建。

  1. 初始化集群第一控制平面节点
安装完整的脚本
#!/bin/bash
###############################################
# QingHub K8S Install 版本: $VERSION
# 架构: $ARCH_TYPE 目前版本主要支持amd64,其他待敬请期待
# 操作系统: $os_type
# QingHub Studio官网: https://qinghub.net
# 如过您安装遇到问题,请到官网查找官方联系方式或加支持群:
#                           https://qinghub.net
###############################################
ENV_CFG=./env.cfg
if [ -f ${ENV_CFG} ] ; then
	chmod 777 ${ENV_CFG}
	source ${ENV_CFG}
fi
os_type=$(uname -s)

if [ $(arch) = "x86_64" ] || [ $(arch) = "amd64" ]; then
    arch_type=amd64
elif [ $(arch) = "aarch64" ] || [ $(arch) = "arm64" ]; then
    arch_type=arm64
elif [ $(arch) = "i386" ]; then
    arch_type=amd64
    echo -e "${YELLOW}[WAIN] 检测到 i386, 我们暂时把它当做 x86_64(amd64) ${NC}"
else
  echo -e "${RED}[ERROR] QingHub Studio 目前还不支持 $(arch) 架构 ${NC}"
  exit 1
fi


###############################################
# 复制并安装cri_containerd_cni 包括:cri, containerd,cni三合一,后续会覆盖安装
# QingHub Studio官网: https://qinghub.net
# 如过您安装遇到问题,请到官网查找官方联系方式或加支持群:
#                                https://qinghub.net
###############################################
function install_cri_containerd_cni(){
  echo -e "${GREEN}[INFO] 下载并安装cri_containerd_cni二级制文件 ${cri_containerd_cni_name} ${NC}"
  if [[ -e /usr/bin/curl ]]; then
       # 离线下载文件请修改TODO
      curl -L ${cri_containerd_cni_url} | sudo tar -C / -xz || {
          echo -e "${RED}[ERROR] 下载并安装cri_containerd_cni二进制文件失败 ${NC}"
          exit 1
      }
  else
      wget -c "$cri_containerd_cni_url" | sudo tar -C / -xz || {
          echo -e "${RED}[ERROR] 下载cri_containerd_cni二进制文件失败 ${NC}"
          exit 1
      }
  fi
  echo -e "${GREEN}[INFO] 创建containerd.service 文件 ${NC}"
  sudo systemctl enable --now containerd
  echo -e "${GREEN}[INFO] 安装containerd成功${NC}"
}


###############################################
# 描述: 初始化containerd 配置文件,添加修改仓库信息,请酌情修改
# QingHub Studio官网: https://qinghub.net
# 如过您安装遇到问题,请到官网查找官方联系方式或加支持群:
#                                https://qinghub.net
###############################################
function install_containerd_config(){
  mkdir -p /etc/containerd
  sudo /usr/local/bin/containerd config default | tee /etc/containerd/config.toml

  # 修改Containerd的配置文件
  sudo sed -i "s#SystemdCgroup\ \=\ false#SystemdCgroup\ \=\ true#g" /etc/containerd/config.toml
  cat /etc/containerd/config.toml | grep SystemdCgroup
  sudo sed -i "s#registry.k8s.io\/pause:3.8#qinghub.net:5000\/qingcloudtech\/pause:3.9#g" /etc/containerd/config.toml
  cat /etc/containerd/config.toml | grep sandbox_image
  sudo sed -i "s#config_path\ \=\ \"\"#config_path\ \=\ \"/etc/containerd/certs.d\"#g" /etc/containerd/config.toml
  cat /etc/containerd/config.toml | grep certs.d

  mkdir /etc/containerd/certs.d/qinghub.net:5000 -pv
  sudo bash -c 'cat > /etc/containerd/certs.d/qinghub.net:5000/hosts.toml << EOF
server = "qinghub.net:5000"
[host."qinghub.net:5000"]
    capabilities = ["pull", "resolve"]
EOF'

  mkdir /etc/containerd/certs.d/docker.io -pv
  sudo bash -c 'cat > /etc/containerd/certs.d/docker.io/hosts.toml << EOF
server = "https://docker.io"
[host."https://qinghub.net:5000"]
  capabilities = ["pull", "resolve"]
[host."https://dockerproxy.com"]
  capabilities = ["pull", "resolve"]
[host."https://docker.m.daocloud.io"]
  capabilities = ["pull", "resolve"]
[host."https://reg-mirror.qiniu.com"]
  capabilities = ["pull", "resolve"]
[host."http://hub-mirror.c.163.com"]
  capabilities = ["pull", "resolve"]
EOF'

  systemctl daemon-reload
  systemctl restart containerd.service
}

###############################################
# 描述: 安装cni文件
# QingHub Studio官网: https://qinghub.net
# 如过您安装遇到问题,请到官网查找官方联系方式或加支持群:
#                                https://qinghub.net
###############################################
function install_cni_plugins(){
  DEST="/opt/cni/bin"
  sudo mkdir -p "$DEST"
  echo -e "${GREEN}[INFO] 下载并安装cni_plugins二级制文件 ${cni_plugins_name} ${NC}"
  if [[ -e /usr/bin/curl ]]; then
      # 离线下载文件请修改TODO
      curl -L ${cni_plugins_url} | sudo tar -C "$DEST" -xz || {
          echo -e "${RED}[ERROR] 下载cni_plugins二进制文件失败 ${NC}"
          exit 1
      }
  else
      wget -c "$cni_plugins_url" | sudo tar -C "$DEST" -xz || {
          echo -e "${RED}[ERROR] 下载cni_plugins二进制文件失败 ${NC}"
          exit 1
      }
  fi
  echo -e "${GREEN}[INFO] 安装cni_plugins成功${NC}"
}

###############################################
# 描述: 拷贝runc文件
# QingHub Studio官网: https://qinghub.net
# 如过您安装遇到问题,请到官网查找官方联系方式或加支持群:
#                                https://qinghub.net
###############################################
function install_runc(){
  DEST="/usr/bin"
  sudo mkdir -p "$DEST"
  cd "$DEST"
  echo -e "${GREEN}[INFO] 下载并安装runc二级制文件 ${runc_name} ${NC}"
  if [[ -e /usr/bin/curl ]]; then
      # 离线下载文件请修改TODO
      curl -L -O ${runc_url} || {
          echo -e "${RED}[ERROR] 下载并安装runc二进制文件失败 ${NC}"
          exit 1
      }
  else
      wget -c "$runc_url" || {
          echo -e "${RED}[ERROR] 下载runc二进制文件失败 ${NC}"
          exit 1
      }
  fi
  if [ -f $DEST/runc.amd64 ]; then
     chmod +x $DEST/runc.amd64
     mv $DEST/runc.amd64 $DEST/runc
  fi
  echo -e "${GREEN}[INFO] 安装runc成功${NC}"
}

###############################################
# 描述: 拷贝crictl工具文件
# QingHub Studio官网: https://qinghub.net
# 如过您安装遇到问题,请到官网查找官方联系方式或加支持群:
#                                https://qinghub.net
###############################################
function install_crictl(){
  DEST="/usr/local/bin"
  sudo mkdir -p "$DEST"

  echo -e "${GREEN}[INFO] 下载并安装crictl二级制文件 ${crictl_name} ${NC}"
  if [[ -e /usr/bin/curl ]]; then
      # 离线下载文件请修改TODO
      sudo curl -L ${crictl_url} | sudo tar -C $DEST -xz || {
          echo -e "${RED}[ERROR] 下载crictl二进制文件失败 ${NC}"
          exit 1
      }
  else
      sudo wget -c "$crictl_url" | sudo tar -C "$DEST" -xz || {
          echo -e "${RED}[ERROR] 下载crictl二进制文件失败 ${NC}"
          exit 1
      }
  fi
  echo -e "${GREEN}[INFO] 安装crictl成功${NC}"
  #生成配置文件
  sudo bash -c "cat > /etc/crictl.yaml <<EOF
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 10
EOF"
  systemctl restart containerd
}


###############################################
# 描述: 安装kubeadmin,kubelet,kubectl,在每个节点都需要安装kubeadmin,kubelet,
# kubectl根据情况在合适的控制平台节点安装,可以修改参数$QINGCLOUD_KUBECTL_FLAG=no关闭安装
# QingHub Studio官网: https://qinghub.net
# 如过您安装遇到问题,请到官网查找官方联系方式或加支持群:
#                                https://qinghub.net
###############################################
function install_kubeadm(){
  TEMP="/tmp"

  echo -e "${GREEN}[INFO] 下载Kubernetes二级制文件 ${KUBERNETES_VERSION} ${NC}"

  if [[ -e /usr/bin/curl ]]; then
      # 离线下载文件请修改TODO
      sudo curl -L "${kubernetes_server_url}" | sudo tar -C "$TEMP" -xz || {
          echo -e "${RED}[ERROR] 下载Kubernetes二进制文件失败 ${NC}"
          exit 1
      }
  else
      sudo wget -c "$kubernetes_server_url" | sudo tar -C "$TEMP" -xz || {
          echo -e "${RED}[ERROR] 下载Kubernetes二进制文件失败 ${NC}"
          exit 1
      }
  fi

  DEST="/usr/bin"
  cd $DEST
  sudo cp $TEMP/kubernetes/server/bin/{kubeadm,kubelet} .
  sudo chmod +x {kubeadm,kubelet}

  echo -e "${GREEN}[INFO] 成功安装kubeadm,kubelet到${DEST}目录 ${NC}"
  echo -e "${GREEN}[INFO] 创建kubelet.service 文件 ${NC}"
  sudo bash -c "cat > /usr/lib/systemd/system/kubelet.service <<EOF
[Unit]
Description=kubelet: The Kubernetes Node Agent
Documentation=https://kubernetes.io/docs/
Wants=network-online.target
After=network-online.target

[Service]
ExecStart=${DEST}/kubelet
Restart=always
StartLimitInterval=0
RestartSec=10

[Install]
WantedBy=multi-user.target
EOF"
  sudo mkdir -p /usr/lib/systemd/system/kubelet.service.d
  echo -e "${GREEN}[INFO] 创建10-kubeadm.conf 文件 ${NC}"
  sudo bash -c "cat > /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf <<EOF
[Service]
Environment=\"KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf\"
Environment=\"KUBELET_CONFIG_ARGS=--config=/var/lib/kubelet/config.yaml\"
EnvironmentFile=-/var/lib/kubelet/kubeadm-flags.env
EnvironmentFile=-/etc/sysconfig/kubelet
ExecStart=
ExecStart=$DEST/kubelet \\\$KUBELET_KUBECONFIG_ARGS \\\$KUBELET_CONFIG_ARGS \\\$KUBELET_KUBEADM_ARGS \\\$KUBELET_EXTRA_ARGS
EOF"
sudo bash -c "cat > /etc/sysconfig/kubelet <<EOF
KUBELET_EXTRA_ARGS=
EOF"
  #创建必须要的几个目录
  sudo mkdir -p /var/lib/kubelet
  sudo mkdir -p /etc/kubernetes/manifests
  sudo systemctl enable kubelet
  if [ "$QINGCLOUD_KUBECTL_FLAG" == "yes" ]; then
    cd $DEST
    sudo cp ${TEMP}/kubernetes/server/bin/kubectl .
    sudo chmod +x kubectl
    echo -e "${GREEN}[INFO] 成功安装kubectl到${DEST}目录 ${NC}"
  fi

  if [[ -d "${TEMP}/kubernetes" ]]; then
    sudo rm -rf "${TEMP}/kubernetes-server-linux-amd64"
    echo -e "${GREEN}[INFO] 临时安装文件${TEMP}/kubernetes-server-linux-amd64正常删除 ${NC}"
  fi
}

###############################################
# 描述: 初始化控制平面节点。
# ${QINGCLOUD_ADVERTISE_ADDRESS}       ApiServer地址,请根据情况填写,可以是配置的高可用地址
# ${LOCAL_IMAGE_DOMAIN}               本地容器镜像仓库地址
# ${LOCAL_IMAGE_NAMESPACE}            本地容器镜像命名空间
# ${KUBERNETES_VERSION}               K8S版本
# QingHub Studio官网: https://qinghub.net
# 如过您安装遇到问题,请到官网查找官方联系方式或加支持群:
#                                https://qinghub.net
###############################################
function init_cluster(){
  echo -e "${GREEN}[INFO] ==========初始化第一个控制平面,请根据输出结果初始其他他节点========= ${NC}"
  kubeadm init \
    --apiserver-advertise-address="${QINGCLOUD_ADVERTISE_ADDRESS}" \
    --image-repository "${LOCAL_IMAGE_DOMAIN}/${LOCAL_IMAGE_NAMESPACE}" \
    --kubernetes-version "${KUBERNETES_VERSION}" \
    --cri-socket=unix:///run/containerd/containerd.sock \
    --service-cidr=10.96.0.0/16 \
    --pod-network-cidr=172.16.0.0/16
}

# 主入口地址,根据实际可以手动执行相关内容
function main {
    echo -e "${GREEN}[INFO] ==========开始安装kubernetes========= ${NC}"
    #安装containerd
    install_cri_containerd_cni
    #安装cni plugin
    install_cni_plugins
    #安装containerd 配置文件
    install_containerd_config
    #安装crictl
    install_crictl
    #安装runc
    install_runc
    #安装kubeadm
    install_kubeadm
    #初始化集群master节点
    if [ "$QINGCLOUD_KUBECTL_FLAG" == "yes" ] ;then
      init_cluster
    fi
    echo -e "${GREEN}[INFO] ==========完成安装kubernetes========= ${NC}"
}

main


你可以通过【QingHub Studio】) 套件直接安装部署,也可以手动按如下文档操作,该项目已经全面开源,完整的脚本可以从如下开源地址获取:
开源地址: https://gitee.com/qingplus/qingcloud-platform
【QingHub Studio集成开发套件】

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Kubernetes是一个流行的容器编排工具,它可以自动化应用程序的部署、扩展和管理。Kubernetes 1.19.7是一个稳定版本,下面是关于如何离线部署Kubernetes 1.19.7的步骤: 1. 获取离线部署所需的二进制文件和镜像:离线部署需要提前准备Kubernetes二进制文件、Kubernetes组件的镜像以及其他依赖的工具和组件的二进制文件和镜像。可以通过官方网站下载或使用其他途径获取这些文件和镜像。 2. 配置Kubernetes集群:在开始部署之前,需要配置Kubernetes集群的各个组件,包括Master节点和Worker节点的网络、存储和安全设置等。根据实际需求进行配置,并确保各组件之间能够正常通信。 3. 安装etcd:etcd是Kubernetes的数据存储组件,用于存储集群的状态信息。先安装etcd集群,并确保集群处于健康状态。 4. 部署Master节点:在Master节点上部署Kubernetes的核心组件,包括kube-apiserver、kube-controller-manager、kube-scheduler等。按照官方文档提供的步骤和参数进行安装和配置。 5. 部署Worker节点:在Worker节点上部署Kubernetes的工作组件,包括kubelet和kube-proxy。同样,按照官方文档提供的步骤和参数进行安装和配置。 6. 部署网络插件:部署网络插件是为了使集群中的各个容器可以相互通信。根据实际需求选择合适的网络插件,并按照官方文档提供的步骤进行安装和配置。 7. 部署其他组件:根据实际需求,可以部署其他的Kubernetes组件,如Ingress控制器、Dashboard等。同样,按照官方文档提供的步骤进行安装和配置。 8. 验证集群:完成以上步骤后,可以使用kubectl命令验证集群的正常运行。比如,可以使用kubectl get pods命令查看集群中运行的Pod,以确保集群正常工作。 请注意,离线部署Kubernetes需要提前准备好相应的二进制文件和镜像,并且要仔细阅读官方文档,确保按照正确的步骤进行部署和配置。 ### 回答2: k8s1.19.7离线部署是指在没有互联网连接或无法直接下载Kubernetes软件包的环境中,将Kubernetes集群部署起来。以下是一个简要的步骤: 1. 下载所需的软件包: 首先,在有互联网连接的环境中,下载Kubernetes 1.19.7版本的所有相关软件包,包括kubeadm、kubelet和kubectl。你可以通过访问官方网站或使用工具从镜像源进行下载。 2. 复制软件包到离线环境: 将下载好的软件包复制到离线环境中,可以使用USB存储设备或其他文件传输方式。 3. 安装Docker和相关依赖: 在离线环境中,安装Docker并配置Docker镜像源,以便在部署过程中可以拉取所需的容器镜像。同时,安装其他Kubernetes所需的依赖。 4. 初始化主节点: 在主节点上使用kubeadm初始化Kubernetes集群。根据你的网络环境,可以选择配置私有的Pod网络和Service网络。 5. 加入工作节点: 在工作节点上安装同样版本的Kubernetes软件包,并使用kubeadm将其加入到已初始化的主节点。 6. 配置网络插件: 根据你的需求选择一个适合的网络插件,如Calico、Flannel等,并在集群中配置。 7. 配置存储和其他组件: 这包括配置持久化存储、添加Dashboard等其他Kubernetes组件。 8. 验证集群: 使用kubectl命令和其他工具验证集群的状态和功能是否正常运行。 通过以上步骤,你可以在离线环境中成功部署Kubernetes 1.19.7版本的集群。请注意,这只是一个简要的步骤概述,实际操作中可能会遇到不同的问题和挑战,需要根据具体环境进行相应的调整和处理。 ### 回答3: Kubernetes(简称K8s)是一个开源的容器管理平台,它可以帮助我们自动化和管理容器化应用程序的部署、扩展和管理。在离线环境中部署Kubernetes可以确保在没有互联网连接的情况下使用Kubernetes进行应用程序的管理和协调工作。 要在离线环境中部署Kubernetes 1.19.7,需要进行以下步骤: 1. 准备离线环境: 在没有互联网连接的环境中,需要事先准备好离线环境所需的安装文件和软件包。这包括Kubernetes的二进制文件、镜像文件、网络插件、存储插件等。 2. 安装Docker: 首先,需要在离线环境中安装Docker。在离线环境中,可以事先将Docker镜像手动导入到离线环境中,并手动安装Docker。 3. 安装Kubernetes二进制文件: 将Kubernetes的二进制文件传输到离线环境中,并在所有的节点上进行安装。这包括kubeadm、kubelet和kubectl等二进制文件。 4. 导入Kubernetes镜像: 将事先准备好的Kubernetes镜像文件导入到离线环境中。可以使用docker load命令将镜像导入到Docker中。 5. 配置Kubernetes集群: 在离线环境中,需要手动配置Kubernetes集群的各个组件。这包括初始化Master节点、加入Worker节点以及配置网络和存储插件等。 6. 启动Kubernetes集群: 在所有节点上,启动Kubernetes集群的各个组件。可以使用systemctl命令启动kubelet服务,并手动启动其他组件。 7. 验证Kubernetes集群: 最后,在离线环境中验证Kubernetes集群的正常运行。可以使用kubectl命令检查集群的状态,并部署简单的测试应用程序来验证集群的功能。 通过以上步骤,您可以在离线环境中成功部署Kubernetes 1.19.7,并使用它来管理和协调容器化应用程序。需要注意的是,在离线环境中部署Kubernetes可能会比在线环境中更复杂和繁琐,因此在准备和执行过程中需要仔细阅读相关文档,并确保准备好离线环境所需的所有组件和文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值