• kubernetes集群部署(v1.23.5)


    1.部署拓扑

    1.1服务配置及拓扑

    镜像:CentOS-7-x86_64-Minimal-1908

    CPU:2核

    内存:2G

    1.2更改主机名

    //在master虚拟机上,设置master01节点

    hostnamectl set-hostname master01

    //立马生效

    bash

    //查看/etc/hostname为master01

    cat /etc/hostname

    //重启后永久生效

    reboot

    //同理在node1虚拟机上,设置node01节点

    hostnamectl set-hostname node01

    //立马生效

    bash

    //查看/etc/hostname为node01

    cat /etc/hostname

    //重启后永久生效

    reboot

    node2如node1操作

    2.安装docker

    //安装yum工具

    yum install -y yum-utils

    //卸载旧版本Docker

    sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

    //安装仓库

    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

    //更新配置yum源后,用如下命令生成缓存,提高搜索安装软件速度

    sudo yum makecache fast

    //安装Docker

    sudo yum install docker-ce docker-ce-cli containerd.io -y

    //启动docker

    sudo systemctl start docker

    //设置开机启动

    sudo systemctl enable docker

    sudo systemctl status docker

    //新增配置文件

    cat  >> /etc/docker/daemon.json << EOF

    {

     "exec-opts":["native.cgroupdriver=systemd"]

    }

    EOF

    //重启docker

    systemctl restart docker

    systemctl status docker

    3.服务器配置

    3.1关闭防火墙

    systemctl stop firewalld

    systemctl disable firewalld

    3.2将SELinux设置为permissive模式(相当于将其禁用)

    setenforce 0

    sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

    3.3允许 iptables 检查桥接流量

    cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf

    br_netfilter

    EOF

    cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf

    net.bridge.bridge-nf-call-ip6tables = 1

    net.bridge.bridge-nf-call-iptables = 1

    EOF

    sysctl --system

    3.4关闭系统的Swap

    swapoff -a

    //关闭swap分区

    sed -ri 's/.*swap.*/#&/' /etc/fstab

    3.5配置/etc/hosts

    //自定义master与node IP,请根据个人情况修改

    cat >> /etc/hosts << EOF

    192.168.186.155 master01

    192.168.186.156 node01

    192.168.186.157 node02

    EOF

    4.安装kubelet、kubeadm和 kubectl

    4.1配置软件源

    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=0

    gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

    EOF

    //针对修改repo_gpgcheck=0

    4.2安装kubelet kubeadm kubectl

    在所有节点上安装kubelet、kubeadm和kubectl。

    1. kubelet运行在Cluster所有节点上,负责启动Pod和容器。
    2. kubeadm用于初始化Cluster。
    3. 通过kubectl可以部署和管理 应用,查看各种资源,创建、删除和更新各种组件。

    sudo yum update -y

    //sudo yum install -y kubelet-1.19.4 kubeadm-1.19.4 kubectl-1.19.4

    //可以根据github发布版本,指定

    //最新的1.24版本已经弃用docker,所以此处需指定1.23

    sudo yum install -y kubelet-1.23.5 kubeadm-1.23.5 kubectl-1.23.5

    //默认最新版本

    //sudo yum install -y kubelet kubeadm kubectl

    sudo systemctl enable --now kubelet

    sudo systemctl start kubelet

    //sudo systemctl status kubelet 此时kubelet还没有正常准备,待kubeadm init后master节点会ok,将node节点join添加后kubelet也会正常

    4.3检查工具安装

    yum list installed | grep kubelet

    yum list installed | grep kubeadm

    yum list installed | grep kubectl

    //查看集群版本结果Kubernetes v1.23.5

    kubelet --version

    5.用kubeadm创建Cluster

    5.1初始化Master

    1. --apiserver-advertise-address指明用Master的哪个interface与Cluster的其他节点通信。如果Master有多个interface,建议明确指定,如果不指定,kubeadm会自动选择有默认网关的interface。
    2. --pod-network-cidr指定Pod网络的范围。Kubernetes支持多种网络方案,而且不同网络方案对--pod-network-cidr有自己的要求,这里设置为10.244.0.0/16是因为我们将使用flannel网络方案,必须设置成这个CIDR。在后面的实践中我们会切换到其他网络方案,比如Canal。

    //apiserver-advertise-address 192.168.186.155为master节点IP,根据个人master IP修改

    kubeadm init --apiserver-advertise-address 192.168.186.155 --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr 10.244.0.0/16 --service-cidr 10.96.0.0/12

    补充:Kubeadm初始化报错:[ERROR CRI]: container runtime is not running

    解决办法:

    rm -rf /etc/containerd/config.toml

    systemctl restart containerd

    //如果执行失败,需重置

    kubeadm reset

    //配置客户端kubectl

    mkdir -p $HOME/.kube

    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

    sudo chown $(id -u):$(id -g) $HOME/.kube/config

    5.2初始化worker

    //worker节点添加到集群 ---> 在worker节点node1上执行

    //可以通过kubeadm token list查看token

    //也可以通过如下命令一次性获取命令

    kubeadm token create --print-join-command

    5.3添加pod网络 calico --> master节点执行

    wget https://docs.projectcalico.org/v3.20/manifests/calico.yaml --no-check-certificate

    kubectl apply -f calico.yaml

    //此处应用后node状态由NotReady --> Ready

    5.4控制面查看集群

    kubectl get nodes

    kubectl get pod -A

    5.5工作负载worker节点node1查看集群

    //在master01传文件到node01,其中172.168.186.156为master01节点

    scp -r /etc/kubernetes/admin.conf root@172.168.186.156:/etc/kubernetes/

    //在node1上执行

    echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile

    source ~/.bash_profile

  • 相关阅读:
    体验Vue3的SSR框架 - Nuxt3
    ajax与python flask之间的表单数据传输
    常见响应头,请求头
    uniapp在不需要后端数据的情况下 怎么记录用户进一次记录一次
    【Spring源码】9. 重要的ConfigurationClassPostProcessor
    Jetson(ubuntu18.04)使用v4l2-ctl工具USB摄像头和CSI 摄像头的规格参数查看方法
    java:IDEA中的Scratches and Consoles
    C primer plus学习笔记 —— 10、位运算
    第6集丨遗世独立的修道生涯
    SystemVerilog Assertions应用指南 Chapter1.29“ disable iff构造
  • 原文地址:https://blog.csdn.net/cuibin1991/article/details/125446671