首页 > 其他分享 >kubeadm 搭建 k8s

kubeadm 搭建 k8s

时间:2024-03-27 14:23:03浏览次数:21  
标签:cri kubernetes -- apt kubeadm k8s com 搭建

kubeadm 搭建 k8s

  • 预先构建基础环境
  • 搭建需要的运行时环境

以下使用的是 docker + cri-dockerd 的方案,明显区别在 sock 指定上,其他无差别

安装 k8s 组件

截至 2024-1-10 各个镜像站最新版本,目前官方最新 1.29.0,1.28.5,1.27.9

站点 1.29.x 1.28.x 1.27.x 备注
清华 x 1.28.2 1.27.6
中科大 x 1.28.2 1.27.6
华为云 x x x 目前最高版本 1.23.1
阿里云 x 1.28.2 1.27.6 提供了新的源,可与官方版本一致
腾讯云 x 1.28.2 1.27.6

配置软件源

RHEL系配置

配置安装源,阿里云新版

# 版本支持 1.24-1.29
release=1.28
cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v${release}/rpm/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v${release}/rpm/repodata/repomd.xml.key
EOF
  • 旧版配置方案

    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
    gpgcheck=1
    repo_gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
    EOF
    

Debian系配置

apt update && apt install -y apt-transport-https

release=1.28
curl -fsSL https://mirrors.aliyun.com/kubernetes-new/core/stable/v${release}/deb/Release.key |
    gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://mirrors.aliyun.com/kubernetes-new/core/stable/v${release}/deb/ /" |
    tee /etc/apt/sources.list.d/kubernetes.list

安装应用

RHEL系

# 版本筛选,新版源,仅能筛选子版本
yum list --showduplicates kubeadm
# 安装应用,如果有版本要求,自行指定版本,如 kubeadm-1.28.1
yum install -y kubeadm kubectl kubelet

Debian系

apt-get update
apt-get install -y kubelet kubeadm kubectl

启用 kubelet,会报错,忽略,因为未初始化,无法加载

# 重启服务【这一步必需要做,会报错,先忽略】
systemctl daemon-reload
systemctl enable --now kubelet

其他配置

# 不能没有自动补全
kubectl completion bash > /etc/profile.d/kubectl_completion.sh

补充说明,kubelet 可能遇到报错,没报错不用改

# 修改 kubelet 配置,基于docker
cat > /etc/sysconfig/kubelet <<EOF
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd --container-runtime-endpoint=/run/cri-dockerd.sock"
EOF
# 修改 kubelet 配置,基于 containerd
cat >/etc/sysconfig/kubelet<<EOF
KUBELET_KUBEADM_ARGS="--container-runtime=remote --runtime-request-timeout=15m --container-runtime-endpoint=unix:///run/containerd/containerd.sock --cgroup-driver=systemd"
EOF

# 使用虚拟机部署,以上环境具备时,可关机,做个快照,基于快照克隆会是个好选择
# 高版本 VMware 会自行处理 mac 和 uuid
# 配置的 uuid 可删除,实际虽然一样,但是不影响使用,IP和MAC不同即可

集群管理

初始化

  1. 查看镜像信息

    # 查看需要的镜像,官方源
    kubeadm config images list
    # 查看镜像,阿里云
    kubeadm config images list --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers
    
  2. 拉取镜像

    kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers --cri-socket unix:///run/cri-dockerd.sock
    
  3. 手动初始化【方案一】

    kubeadm init --image-repository registry.aliyuncs.com/google_containers --cri-socket unix:///run/cri-dockerd.sock
    
  4. 使用配置文件初始化【方案二】

    # 导出配置文件
    kubeadm config print init-defaults > kubeadm-config.yaml
    # 修改配置文件
    advertiseAddress 			# 管理平面的IP,服务器主机IP地址
    podSubnet				# pod 子网
    serviceSubnet				# service 子网
    kubernetesVersion			# kubeadm 版本需对应
    imageRepository				# 更改为国内镜像 registry.cn-hangzhou.aliyuncs.com/google_containers
    criSocket				# 修改对应的,如cri-docker,unix:///var/run/cri-dockerd.sock
    name					# 改为主机名
    #可能需要修改kubelet、cri-docker服务,修改后重新加载并重启
    # 初始化 master01
    kubeadm init --config kubeadm.yaml --upload-certs
    

正常情况,初始化完成,弹出对话框,按照对话框补全环境即可;如果有报错,调报错

  • 成功初始化,配置环境

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

网络组件安装

  1. 下载配置

    calico_ver=3.27
    wget -O calico.yaml -c  https://mirror.ghproxy.com/https://github.com/projectcalico/calico/blob/release-v${calico_ver}/manifests/calico-typha.yaml
    
  2. 加载配置

    kubectl apply -f calico.yaml
    
  3. 观察一手

    watch kubectl get po -A
    

节点加入

kubeadm join 192.168.80.201:6443 \
--token am8ata.e77yd9wpdsc4tstt \
--discovery-token-ca-cert-hash sha256:be1f3d87d457358772de7bdea35aaafb790ada7d898eb5245b4e63dc719d6b00 \
--cri-socket unix:///var/run/cri-dockerd.sock --v=5

标签:cri,kubernetes,--,apt,kubeadm,k8s,com,搭建
From: https://www.cnblogs.com/chongxs/p/18099064/kubeadm-install

相关文章

  • opencv开发环境搭建window
    1.python安装官网地址https://www.python.org/根据需求下载最新或者指定版本,下载完成后双击exe进行安装。安装完成后,需要环境变量->系统变量->Path 新增,把Python安装的填入。这样可以在cmd下直接使用Python。  2.安装 numpymatplotlibopencv-python python-m......
  • 攻防技术+隧道搭建-1
    三、网络层隧道技术......
  • node.js开发环境搭建
    node.js开发环境搭建前端主要使用javascript或typescript语言,前端项目主要使用node.js(提供运行环境)+npm(管理项目包依赖)进行项目构建,而node.js与npm版本关系有耦合,因此需要使用nvm工具统一管理node.js与npm的版本。安装nvm更多细节参考官方文档,本文以macos为例进行安装。注意:官......
  • 如何在K8s中实现 Pod 的自动扩展
    在Kubernetes中实现Pod的自动扩缩,你可以使用HorizontalPodAutoscaler资源。以下是一个简单的例子:首先,你需要确保你的Kubernetes集群中已经安装了MetricsServer,因为HPA需要它来获取Pod的资源使用情况。1、部署MetricsServer(如果尚未部署):kubectlapply-fhttps......
  • 使用K8S集群运行MongoDB7.0
    参考:https://hub.docker.com/_/mongo创建PVC创建PVC用于数据持久化#catmongodb-pvc.yamlapiVersion:v1kind:PersistentVolumeClaimmetadata:name:mongodb-pvcspec:accessModes:-ReadWriteOnceresources:requests:storage:22Gistorag......
  • 全网最简单最快捷的搭建nextcloud教程(开箱即用),也可以说是保姆级虚拟机安装Ubuntu23.
    nextcloud是一款开源的网盘工具,适用于个人或中小型公司。纯英文的官网很多同行看着云里雾里的,网上的教程也零零散散的,容易踩坑。今天我来发一个最简单最快捷的搭建nextcloud的教程。完全傻瓜化,非docker方式。本质上就是Ubuntu23.10自带nextcloud包,安装最后一步的时候勾选上即......
  • Rancher Dashboard 无法访问 引申发现K8S报错Unable to connect to the server: x509:
    访问RancherDashboard,发现无法访问由于笔者的rancher是用docker部署的,查看rancherlog:dockerlogs[container-name]截取一部分报错如下:..2024-03-2406:52:27.085313I|embed:readytoserveclientrequests2024-03-2406:52:27.085567I|etcdserver:published{N......
  • aardio教程) 搭建自己的扩展库仓库
    前言aardio中有些经常使用的库,换个项目总需要复制一下,还不便于修改。虽然可以直接把它放到aardio\lib目录下,也是不便于共享给其他人使用。最近偶然翻到编辑器里的工具->开发环境->扩展库发布工具,就想着可以像官方一样,发布自己的扩展库,也便于分享给大家使用,最好能像官方扩展库一......
  • AI实用指南:5分钟搭建你自己的LLM聊天应用
    今天,我们将迅速着手搭建一个高效且富有创意的混元聊天应用,其核心理念可以用一个字来概括——快。在这个快节奏的时代,构建一个基础的LLM(LargeLanguageModel,大型语言模型)聊天应用并不需要耗费太多时间。市面上充斥着各种功能强大的大型语言模型,我们可以根据项目需求灵活选择,而今天......
  • 使用Nexus搭建私服:加速依赖管理和提高项目稳定性
    在软件开发过程中,依赖管理是至关重要的一环。随着项目的增长和复杂性的提升,对于依赖库的管理变得越来越复杂。为了解决这一问题,搭建一个私有的仓库是一个明智的选择。本文将介绍如何使用Nexus搭建私服,并利用其来加速依赖管理和提高项目稳定性。什么是Nexus?Nexus是一款强大......