kubernetes(k8s) v1.28.2 安装与部署

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

版本:kubernetes(k8s) v1.28.2

1 准备工作

  1. 并准备主机名映射。
    设置好静态IP。
    在Ubuntu的/etc/hosts文件中,填入如下内容。也可以在Windows的C:\Windows\System32\drivers\etc\hosts文件中填写相同内容。
    192.168.88.131 node1
    192.168.88.132 node2
    192.168.88.133 node3
    
  2. 关闭防火墙和SELinux。
    • 关闭防火墙命令如下。
      systemctl stop firewalld
      systemctl disable firewalld
      
      可使用命令systemctl status firewalld查看防火墙状态。
    • 关闭SELinux命令如下。
      # 方法一:
      sudo vim /etc/selinux/config
      # 将SELINUX=enforcing改为SELINUX=disabled
      # 保存退出后,重启虚拟机即可,千万要注意disabled单词不要写错,不然无法启动系统
      # 方法二:
      setenforce 0
      
  3. 关闭swap分区
    临时关闭:sudo swapoff -a
    永久关闭swap:sudo sed -ri 's/.*swap.*/#&/' /etc/fstab
  4. 设置内核参数
    安装bridge-utils,命令为sudo apt-get install -y bridge-utils
    使用 modprobe 加载,命令为udo modprobe br_netfilter。使用命令lsmod | grep br_netfilter就能看到 br_netfilter 模块。
    使用命令sudo sysctl -a | grep bridge确认内核参数 net.bridge.bridge-nf-call-iptables 是否为 1。若不为1,使用下面的命令来修改:
    cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    EOF
    sudo sysctl --system
    

2. 安装docker

  1. 安装见其他笔记:https://blog.csdn.net/White_Ink_/article/details/133548415?spm=1001.2014.3001.5501
  2. 修改cgroup管理器
    ubuntu 系统,debian 系统,centos7 系统,都是使用 systemd 初始化系统的。systemd 这边已经有一套 cgroup 管理器了,如果容器运行时和 kubelet 使用 cgroupfs,此时就会存在 cgroups 和 systemd 两种 cgroup 管理器。也就意味着操作系统里面存在两种资源分配的视图,当操作系统上存在 CPU,内存等等资源不足的时候,操作系统上的进程会变得不稳定。
    在/etc/docker/daemon.json中添加以下内容。
      "exec-opts": [
        "native.cgroupdriver=systemd"
      ], 
    

3. 安装kubelet、kubeadm、kubectl

  1. 设置阿里镜像源
    sudo apt-get install -y ca-certificates curl software-properties-common apt-transport-https curl
    sudo curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
    sudo tee /etc/apt/sources.list.d/kubernetes.list <<EOF 
    deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
    EOF
    sudo apt-get update
    
  2. 安装kubeadm kubectl
    sudo apt-get install -y kubelet kubeadm kubectl
    # 也可以指定安装版本
    sudo apt-get install -y kubelet-1.28.2 kubeadm-1.28.2 kubectl-1.28.2
    # 阻止自动更新(apt upgrade时忽略)。所以更新的时候先unhold,更新完再hold。
    sudo apt-mark hold kubelet kubeadm kubectl
    

4. cri环境配置

  1. 下载
    从github上下载文件。
    或使用命令wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.6/cri-dockerd-0.3.6.amd64.tgz
  2. 解压
    tar -zxvf cri-dockerd-0.3.6.amd64.tgz
    sudo mv ./cri-dockerd/cri-dockerd /usr/local/bin/
    cri-dockerd --version
    
  3. 配置
    在/etc/systemd/system/cri-dockerd.service中添加以下内容。
    [Unit]
    Description=CRI Interface for Docker Application Container Engine
    Documentation=https://docs.mirantis.com
    After=network-online.target firewalld.service docker.service
    Wants=network-online.target
     
    [Service]
    Type=notify
    ExecStart=/usr/local/bin/cri-dockerd --pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.9 --network-plugin=cni --cni-conf-dir=/etc/cni/net.d --cni-bin-dir=/opt/cni/bin --container-runtime-endpoint=unix:///var/run/cri-dockerd.sock --cri-dockerd-root-directory=/var/lib/dockershim --docker-endpoint=unix:///var/run/docker.sock --
    cri-dockerd-root-directory=/var/lib/docker
    ExecReload=/bin/kill -s HUP $MAINPID
    TimeoutSec=0
    RestartSec=2
    Restart=always
    StartLimitBurst=3
    StartLimitInterval=60s
    LimitNOFILE=infinity
    LimitNPROC=infinity
    LimitCORE=infinity
    TasksMax=infinity
    Delegate=yes
    KillMode=process
    [Install]
    WantedBy=multi-user.target
    
    在/etc/systemd/system/cri-dockerd.socket中添加以下内容。
    [Unit]
    Description=CRI Docker Socket for the API
    PartOf=cri-docker.service
    [Socket]
    ListenStream=/var/run/cri-dockerd.sock
    SocketMode=0660
    SocketUser=root
    SocketGroup=docker
    [Install]
    WantedBy=sockets.target
    
  4. 启动服务
    重新加载配置:sudo systemctl daemon-reload
    设置为开机自启动:sudo systemctl enable cri-dockerd
    启动服务:sudo systemctl start cri-dockerd
    检查服务状态:sudo systemctl status cri-dockerd

5. 初始化master

  1. 方法一
    这里使用了阿里云的镜像,然后使用了非默认的CIDR,一定要和宿主机的局域网的CIDR不一样。
    sudo kubeadm init --kubernetes-version=1.28.2 \
    --apiserver-advertise-address=192.168.221.3 \
    --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \
    --service-cidr=10.96.0.0/12 \
    --pod-network-cidr=10.244.0.0/16 \
    --cri-socket=unix:///var/run/cri-dockerd.sock
    
    这里会生成kubeadm join命令,先记下来,用于work节点的加入。
  2. 方法二
    生成默认配置文件
    kubeadm config print init-defaults > init.default.yaml
    
    可选择修改配置文件以下内容:
    # 修改地址 节点IP地址
    localAPIEndpoint.advertiseAddress: 192.168.11.190
    # 修改套接字
    nodeRegistration.criSocket: unix:///var/run/cri-dockerd.sock
    # 修改节点名称
    nodeRegistration.name: k8s-master1
    # 修改镜像仓库地址为国内开源镜像库
    imageRepository: registry.aliyuncs.com/google_containers
    # 增加podSubnet,由于后续会安装flannel 网络插件,该插件必须在集群初始化时指定pod地址
    # 10.244.0.0/16 为flannel组件podSubnet默认值,集群配置与网络组件中的配置需保持一致
    networking.podSubnet: 10.244.0.0/16
    
    使用下面命令初始化。
    sudo kubeadm init  --config init.default.yaml
    
  3. non-root用户使用kubectl
    如果是non-root用户,执行下面命令可使其可以使用kubectl命令。
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    

6. 加入work节点

  1. 加入节点
    在work节点上运行如下命令。注意是使用上一步生成的。
    kubeadm join 192.168.221.3:6443 --token 16pw7a.7hp1yvbboanjv1ba \
    --cri-socket=unix:///var/run/cri-dockerd.sock \
    --discovery-token-ca-cert-hash sha256:5457a1a48c135a37da0e12e075e444abbbd14b30c179e6fa99c9cf47793fd62c 
    
  2. 验证
    显示一下信息则加入成功。
    This node has joined the cluster:
    * Certificate signing request was sent to apiserver and a response was received.
    * The Kubelet was informed of the new secure connection details.
    
    在mster节点上输入kubectl get nodes查看已经加入的节点。

7. 配置网络插件

下面只在master上执行。以下选择其中一个配置即可。文章来源地址https://www.toymoban.com/news/detail-771642.html

7.1 fannal

  1. 获取fannel的配置文件
    wget https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
    
  2. 修改文件中quay.io仓库为quay-mirror.qiniu.com
  3. 使用配置文件启动fannel
    kubectl apply -f kube-flannel.yml
    
  4. 稍等片刻,再次查看集群节点的状态
    kubectl get nodes
    
    结果为:
    NAME     STATUS   ROLES    AGE     VERSION
    master   Ready    master   15m     v1.17.4
    node1    Ready       8m53s   v1.17.4
    node2    Ready       8m50s   v1.17.4
    

7.2 weave net

  1. 部署weave net
    kubectl apply -f https://github.com/weaveworks/weave/releases/download/v2.8.1/weave-daemonset-k8s.yaml
    
  2. 再次查看集群节点的状态
    kubectl get nodes
    
    结果为:
    NAME     STATUS   ROLES    AGE     VERSION
    master   Ready    master   15m     v1.17.4
    node1    Ready       8m53s   v1.17.4
    node2    Ready       8m50s   v1.17.4
    

报错记录

  1. [ERROR CRI]: container runtime is not running: output: time=“2023-10-24T19:20:04+08:00” level=fatal msg=“validate service connection: CRI v1 runtime API is not implemented for endpoint “unix:///var/run/containerd/containerd.sock”: rpc error: code = Unimplemented desc = unknown service runtime.v1.RuntimeService”
    解决: 注释/etc/containerd/config.toml中的disabled_plugins = ["cri"],并重启containerd,重启命令为systemctl restart containerd
  2. [ERROR Port-10250]: Port 10250 is in use
    解决: systemctl stop kubelet
  3. [kubelet-check] Initial timeout of 40s passed.
    以下是具体内容。
    Unfortunately, an error has occurred:
    	timed out waiting for the condition
    
    This error is likely caused by:
    	- The kubelet is not running
    	- The kubelet is unhealthy due to a misconfiguration of the node in some way (required cgroups disabled)
    
    If you are on a systemd-powered system, you can try to troubleshoot the error with the following commands:
    	- 'systemctl status kubelet'
    	- 'journalctl -xeu kubelet'
    
    Additionally, a control plane component may have crashed or exited when started by the container runtime.
    To troubleshoot, list all containers using your preferred container runtimes CLI.
    Here is one example how you may list all running Kubernetes containers by using crictl:
    	- 'crictl --runtime-endpoint unix:///var/run/cri-dockerd.sock ps -a | grep kube | grep -v pause'
    	Once you have found the failing container, you can inspect its logs with:
    	- 'crictl --runtime-endpoint unix:///var/run/cri-dockerd.sock logs CONTAINERID'
    error execution phase wait-control-plane: couldn't initialize a Kubernetes cluster
    To see the stack trace of this error execute with --v=5 or higher
    
    解决: 修改/var/run/cri-dockerd.sock权限,sudo chmod 777 /var/run/cri-dockerd.sock

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

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

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

相关文章

  • K8S最新版本集群部署(v1.28) + 容器引擎Docker部署(上)

    🔼上一集:win11+vmware17+centos7.9环境搭建 *️⃣主目录:温故知新专栏 🔽下一集:K8S最新版本集群部署(v1.28) + 容器引擎Docker部署(下) 之前部署过dolphinscheduler3.1.8,看页面增加了K8S模块,所以想着部署一下K8S,学习一下,而且海豚调度也提供了K8S部署方式,经过一番了解,发现

    2024年02月11日
    浏览(44)
  • Kubernetes(K8s 1.28.x)部署---超详细

    目录 一、基础环境配置(所有主机均要配置) 1、配置IP地址和主机名、hosts解析 2、关闭防火墙、禁用SELinux 3、安装常用软件 4、配置时间同步 5、禁用Swap分区 6、修改linux的内核参数 7、配置ipvs功能 二、容器环境操作 1、定制软件源 2、安装最新版docker 3、配置docker加速器 4、

    2024年02月11日
    浏览(33)
  • 运维高级学习--Kubernetes(K8s 1.28.x)部署

    主机名规划 1.配置IP地址和主机名、hosts解析 2.关闭防火墙、禁用SELinux 3.安装常用软件 4.时间同步 5.禁用Swap分区 6.修改linux的内核参数 7.配置ipvs功能 1.定制软件源 2.安装最新版docker 3.配置docker加速器 4.启动docker 定制软件源(所有主机操作) 在仓库中新建项目:google_container

    2024年02月11日
    浏览(30)
  • Kubernetes(K8s 1.28.x)部署---创建方式Docker(超详细)

    目录 一、基础环境配置(所有主机均要配置) 1、配置IP地址和主机名、hosts解析 2、关闭防火墙、禁用SELinux 3、安装常用软件 4、配置时间同步 5、禁用Swap分区 6、修改linux的内核参数 7、配置ipvs功能 二、容器环境操作 1、定制软件源 2、安装最新版docker 3、配置docker加速器 4、

    2024年02月09日
    浏览(33)
  • 二进制安装Kubernetes(k8s)v1.29.2

    https://github.com/cby-chen/Kubernetes 开源不易,帮忙点个star,谢谢了 kubernetes(k8s)二进制高可用安装部署,支持IPv4+IPv6双栈。 我使用IPV6的目的是在公网进行访问,所以我配置了IPV6静态地址。 若您没有IPV6环境,或者不想使用IPv6,不对主机进行配置IPv6地址即可。 不配置IPV6,不影

    2024年02月19日
    浏览(44)
  • 【云原生 | Kubernetes 系列】— 部署K8S 1.28版本集群部署(基于Containerd容器运行)

    主机名 IP地址 备注 k8s-master01 192.168.0.109 master k8s-node1 192.168.0.108 node1 k8s-node2 192.168.0.107 node1 k8s-node3 192.168.0.105 node1 1、主机配置 2、升级内核 3、配置内核转发以及过滤 4、安装ipset ipvsadm,IPVS(IP Virtual Server)是一个用于负载均衡的 Linux 内核模块,它可以用来替代 kube-proxy 默认的

    2024年02月20日
    浏览(44)
  • openEuler 22.09环境二进制安装Kubernetes(k8s) v1.26

    本文档描述了如何在openEuler 22.09上以二进制模式部署高可用Kubernetes集群(适用k8s v1.26版本)。 注意:本文档中的所有操作均使用root权限执行。 1、主机清单 本文档采用5台华为ECS进行部署,基本情况如下表所示。 主机名称 IP地址 说明 软件 k8s-master01 192.168.218.100 master节点 k

    2024年02月07日
    浏览(41)
  • Kubernetes[k8s] 最新版1.27.3 - 1.28.0安装教程,使用containerd模式

    公司使用的是交老的k8s版本(1.16),由于老版本的K8s对于现在很多新特性不支持,所以需要升级到新版本。目前2023年7月11日最新版本的k8s是v1.27.3。通过参考官方文档进行k8s部署工作。其中涉及到操作系统配置、防火墙配置、私有镜像仓库等。 推荐一个AI工具:态灵AI: chata

    2024年02月06日
    浏览(32)
  • centos8.x系统安装K8S,kubernetes集群v1.23.9,docker支持的最后一个版本

    卸载podman,centos默认安装了podman容器(不管有没有,执行下总没错),可能与docker存在冲突 2.1 第一种安装方法 docker安装请参考 Linux系统在线安装docker任意版本完整教程 2.2 第二种安装方法 ** ##执行完毕后请记住如下的信息: **

    2024年02月12日
    浏览(51)
  • 【C站首发】全网最新Kubernetes(K8s)1.28版本探秘及部署 基于Containerd容器运行时(100年证书kubeadm)

    序号 操作系统及版本 备注 1 CentOS7u9 需求 CPU 内存 硬盘 角色 主机名 值 8C 8G 1024GB master k8s-master01 值 8C 16G 1024GB worker(node) k8s-worker01 值 8C 16G 1024GB worker(node) k8s-worker02 1.3.1 主机名配置 由于本次使用3台主机完成kubernetes集群部署,其中1台为master节点,名称为k8s-master01;其中2台为wor

    2024年02月08日
    浏览(39)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包