• 【Kubeadm搭建K8S集群】


    Kubeadm 是 k8s 的部署工具,它提供了 kubeadm init 和 kubeadm join,专用于快速部署 k8s 集群,它能通过两条指令完成一个 Kubenetes 集群的搭建。

    服务器配置
    master 节点:

    CPU 两核及以上 内存 4G 及以上 硬盘 20G 及以上
    
    • 1

    node 节点,作为“具体做事”的节点,它的配置要求会更高:

    CPU 四核及以上   内存 8G 及以上  硬盘 40G 及以上
    
    • 1

    注意:下文中的操作步骤,除特别说明在哪个节点操作之外,未说明的均表示该操作在所有节点都得执行。

    主机准备

    Oracle VM VirtualBox 新建三台虚拟机 分别安装 CentOS 系统。一台作为 master 节点,另两台作为 node 节点,且每台虚拟机有自己的专属 IP 地址。

    在这里插入图片描述
    玩转虚拟机之VirtualBox设置虚拟机为静态IP并访问外网

    虚拟机的创建和配置注意以下几点:

    硬件按照上文要求进行配置
    虚拟机之间可以进行网络互通
    虚拟机可以访问外网,便于下载镜像
    安装好 wget 工具 yum install wget
    
    • 1
    • 2
    • 3
    • 4

    系统初始化

    关闭防火墙
    #临时关闭
    systemctl stop firewalld
    #永久关闭
    systemctl disable firewalld
    
    关闭 selinux
    #永久关闭
    sed -i '/selinux/s/enforcing/disabled/' /etc/selinux/config
    #临时关闭
    setenforce 0
    
    关闭 swap
    #临时关闭
    swapoff -a
    #永久关闭
    sed -ri 's/.*swap.*/#&/' /etc/fstab
    
    设置主机名称,使用命令 hostnamectl set-hostname 主机名,如下三台主机分别设置为:
    hostnamectl set-hostname master
    hostnamectl set-hostname node1
    hostnamectl set-hostname node2
    
    #查看当前主机名称
    hostname
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    master节点中添加 hosts,即节点 IP地址+节点名称;

    cat >> /etc/hosts << EOF
    192.168.99.101 master
    192.168.99.102 node1
    192.168.99.103 node2
    EOF
    
    • 1
    • 2
    • 3
    • 4
    • 5

    桥接的 IPv4 流量传递到 iptables 的链(所有节点都设置);

    #设置
    cat > /etc/sysctl.d/k8s.conf << EOF
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    EOF
    
    #使其生效
    sysctl --system
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    时间同步,让各个节点(虚拟机)中的时间与本机时间保持一致

    yum install ntpdate -y
    ntpdate time.windows.com
    
    • 1
    • 2

    Docker 的安装
    Kubernetes 默认容器运行时(CRI)为 Docker,所以需要先在各个节点中安装 Docker。
    docker 的详细安装步骤

    centos7安装docker

    安装 Docker 后,之后的操作均需在 docker 服务开启的前提下进行 。

    各个节点执行启动docker 并设置为开机自启

    #启动docker
    systemctl start docker
    #docker 开机自启
    systemctl enable docker
    
    • 1
    • 2
    • 3
    • 4

    添加阿里云 yum 源(为了方便下载)

    cat > /etc/yum.repos.d/kubernetes.repo << EOF
    [Kubernetes]
    name=kubernetes
    baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
    enabled=1
    gpgcheck=0
    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
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    kubeadm、kubelet、kubectl 的安装

    最好指定版本

    #下载软件
    yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
    #开机自启动
    systemctl enable kubelet
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    安装成功如下:
    在这里插入图片描述
    在 Master 节点中部署集群

    在 master 节点中执行以下命令,注意将 master 节点 IP 和 kube 版本号修改为自己主机中所对应的。

    kubeadm init \
    --apiserver-advertise-address=192.168.99.101 \            改成自己的
    --image-repository registry.aliyuncs.com/google_containers \
    --kubernetes-version v1.18.0 \      改成自己的
    --service-cidr=10.96.0.0/12 \
    --pod-network-cidr=10.244.0.0/16
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    此步骤执行完成之后,使用命令docker images查看系统中的镜像,可以我们需要的镜像均已安装完成。
    查看提示信息,看到 initialized successfully 说明我们 master 节点上的 k8s 集群已经搭建成功;
    在这里插入图片描述
    这两条命令分别表示:

    ① 开启 kubectl 工具的使用(该命令在master节点中执行)。

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

    分别在 master 节点中执行第 ① 条命令,在各个 node 节点中执行第 ② 条命令;

    kubeadm join 192.168.99.101:6443 --token vnrts7.fxrd0pqmu4g2tv7h  \
        --discovery-token-ca-cert-hash sha256:51e381e25629699ba92ed534016f52f82100ab1d45b1a03a1c09e7e8c3be42
    
    • 1
    • 2

    分别在 master 节点中执行第 ① 条命令,在各个 node 节点中执行第 ② 条命令

    执行完成之后在 master 节点中使用命令 kubectl get nodes 查看此时集群中的工作节点。可以看到,node1 和 node2 工作节点已加入至 master 中的集群。
    在这里插入图片描述
    部署 CNI 网络插件
    在上述操作完成后,各个工作节点已经加入了集群,但是它们的状态都是 NoReady,这是由于无它们无法跨主机通信的原因。而 CNI 网络插件的主要功能就是实现 pod 资源能够跨宿主机进行通信。在master节点中执行以下命令进行配置:

    curl https://docs.projectcalico.org/v3.20/manifests/calico.yaml -O
    
    • 1

    然后使用命令 kubectl get pods -n kube-system 查看运行状态,1 代表运行中;

    最后再次使用kubectl get nodes查看集群中的工作节点;可以看到处于开机状态的 master 节点和 node1 node2 节点已经是 ready 状态
    在这里插入图片描述
    查看kubelet日志

     journalctl -xefu kubelet
    
    • 1

    Kubernetes 集群搭建完成。

    搭建的过程中可能遇到的问题和解决方案

    https://blog.csdn.net/qq_49530779/article/details/122037992
    https://blog.csdn.net/chechenshi/article/details/119143003
    https://blog.csdn.net/qq_46237746/article/details/125453966

  • 相关阅读:
    Centos7安装Redis
    20PIN直插百兆网络变压器 H82022D
    wireshark远程抓包
    Web版RSS阅读器yarr
    iText7画发票PDF——小tips
    利用Redis实现全局唯一ID
    『Linux』补丁制作指南
    SpringBoot系列——防重放与操作幂等
    Linux系统编程(二)——Linux系统IO函数
    <MySQL> 查询数据进阶操作 -- 联合查询
  • 原文地址:https://blog.csdn.net/php12345679/article/details/126828548