• minikube搭建k8s


    环境:centos7,docker18

    minikube搭建k8s

    说明

    minikube是最接近原生kubernetes的本地单机版集群,支持大部分kubernetes功能,用于学习和开发k8s。支持Linux、Windows、Mac
    官网安装文档

    安装前提

    • 一台物理机或者虚拟机,物理机CPU大于2核vcpu、2G内存、20G磁盘,此处以CentOS7.9.2009为例
    • 可连接网络
    • 包括一个容器或者虚拟机管理引擎,此处以Docker为例
    • 此处以Linux服务器为例,如CentOS7.9.2003

    安装步骤

    前置操作(可选)

    为了减少部署minikube时可能遇到的一些问题,建议以安装原生kubernets的一些操作系统设置为准,当前未验证不执行以下步骤的可能造成的影响,我会给出执行步骤的意见,请自行取舍。

    升级内核(推荐)

    原因:使用Containerd建议使用内核4.x以上,否则会有内核版本控制的告警

    • 检查当前内核版本,如果低于4.x建议升级
      awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
    • 添加elrepo源
      rpm -Uvh https://mirrors.aliyun.com/elrepo/elrepo/el7/x86_64/RPMS/elrepo-release-7.0-5.el7.elrepo.noarch.rpm
    • 检查有哪些可以的版本(可选,可以直接执行下一步安装最新)
      yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
    • 安装内核
      # 安装最新稳定版
      yum --enablerepo=elrepo-kernel install kernel-lt -y
      # 安装指定版本
      yum --enablerepo=elrepo-kernel install kernel-lt-5.4.180-1.el7.elrepo -y
    • 生成 grub 配置文件
      grub2-mkconfig -o /boot/grub2/grub.cfg
    • 再次查看可用内核版本,并更改启动顺序
      # 更改启动顺序,此处0为最新安装的内核的序号
      grub2-set-default 0
    • 重启并检查当前生效内核版本
      #重启
      reboot
      #检查生效的内核
      uname -r
    升级docker

    原因:较新版本的kubernetes需要的版本较高,当前minikube官方建议是18.09及以上

    • 查看当前docker版本,低于18.09则继续升级docker version
    • 卸载当前安装的docker
      yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate
    • docker-engine安装 yum-utils 包 ,设置存储库yum install -y yum-utils
      yum-config-manager \
      --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
      yum update -y
    • 安装特定版本的docker(可选)
      # 查看当前可用docker版本
      yum list docker-ce --showduplicates | sort -r
      # 安装指定版本
      yum install docker-ce- docker-ce-cli- containerd.io docker-compose-plugin
      # 安装最新版本(推荐)
      yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
    • 启动docker并设置自动启动
      systemctl enable docker
      systemctl start docker
    禁用SELinux

    原因: 当前kubelet不支持SElinux模式。必须关闭以允许容器访问主机文件系统、使Pod网络正常工作
    setenforce 0
    sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

    关闭防火墙(可选)

    systemctl stop firewalld

    禁用swap分区

    原因:原生 kubernetes不禁用swap分区会对性能有较大影响,此处继承
    swapoff -a
    sed -ri 's/.*swap.*/#&/' /etc/fstab

    时间同步(可选)

    注1:可以使用ntp或者chronyd,且两者不能同时使用,此处使用chronyd为例
    注2:chronyd默认同步pool.ntp.org 项目中的公共服务器,也可同步其他服务器,如阿里ntp服务器
    yum -y install chrony
    systemctl start chronyd
    systemctl enable --now chronyd
    # 与公共服务器同步时间
    chronyc sources

    卸载 networkmanager(可选)

    systemctl stop NetworkManager
    yum remove NetworkManager -y

    安装minikube

    • 获取minikube
    • 启动(基本命令)
      minikube start
    • 建议的启动命令
      minikube start --force --driver=docker --cni calico --image-mirror-country='cn' --container-runtime=containerd

    注1:安装1.24.1版本及以上,因为kubernetes弃用了dockershim,改用containerd作为CRI,因此必须指定–container-runtime=containerd,否则kubelet无法正常启动,这个也是高版本无法正常minikube start,但是指定低于1.24.1版本就可以启动的原因
    注2:–image-mirror-country='cn’是使用国内阿里云仓库代替国外谷歌仓库,解决网络慢、不通的问题,实际使用时(2023.3 2)发现谷歌仓库访问正常,阿里云仓库安装最新kubernetes版本时缺少部分镜像,所以能不加此参数时就不加
    注3:如果–image-mirror-country='cn’还是拉不动镜像,比如cni指定calico网络时,无法拉取对应镜像,则建议将–image-mirror-country='cn’替换为 --registry-mirror=https://registry.docker-cn.com,当前测试可行

    配置dashboard为固定service,使用proxy代理到宿主机器

    dashboard配置yaml

    vi  kubernetes-dashboard-nodeport-svc.yaml 
    
    • 1

    配置文件为下面的内容

    apiVersion: v1
    kind: Service
    metadata:
      name: kubernetes-dashboard-nodeport-svc
      namespace: kubernetes-dashboard
      labels:
        addonmanager.kubernetes.io/mode: Reconcile
        k8s-app: kubernetes-dashboard
        kubernetes.io/minikube-addons: dashboard
    spec:
      selector:
        k8s-app: kubernetes-dashboard
      type: NodePort
      ports:
        - protocol: TCP
          port: 9090
          targetPort: 9090
          nodePort: 30000
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    启动dashboard的service并开启代理,测试通过宿主机ip访问dashboard

    #创建dashboard的service
    kubectl apply -f kubernetes-dashboard-nodeport-svc.yaml 
    #启动代理服务
    #kubectl expose deployment kubernetes-dashboard/kubernetes-dashboard-nodeport-svc --type=LoadBalancer --port=30000
    kubectl proxy --address='0.0.0.0'  --accept-hosts='^*$' --port=30000 &
    
    • 1
    • 2
    • 3
    • 4
    • 5

    打开宿主机ip对应的地址:
    http://172.168.12.128:30000/api/v1/namespaces/kubernetes-dashboard/services/kubernetes-dashboard-nodeport-svc/proxy
    kubernetes-dashboard/kubernetes-dashboard-nodeport-svc
    显示下面的页面即为dashboard页面
    在这里插入图片描述

  • 相关阅读:
    C#8.0本质论第七章--继承
    【手撕STL】unordered_set、unordered_map(用哈希表封装)
    UDP的可靠性传输2
    ORM之查询常见的关键字,神奇的双下滑线查询,外键字段数据操作,正反向概念,基于对象的跨表查询,基于双下滑线的跨表查询
    Android 13 - Media框架(11)- MediaCodec(一)
    MATLAB神经网络编程(八)——BP神经网络的限制与改进
    php-文件存取
    Masked Label Prediction: Unified Message Passing Model for Semi-Supervised Classification
    排序算法-插入排序详解
    Halcon的相机内参外参的标定
  • 原文地址:https://blog.csdn.net/u011405698/article/details/133128288