美文网首页
在linux系统中安装minikube

在linux系统中安装minikube

作者: 惜鸟 | 来源:发表于2021-04-07 11:54 被阅读0次

    详细信息查看官方文档:https://minikube.sigs.k8s.io/docs/start/

    部署环境:
    操作系统:CentOS Linux 7 (Core)
    操作系统类型:linux
    架构:x86_64
    minikube版本:v1.18.1
    kubernetes版本:1.20.2

    1、安装docker

    首先需要在linux系统中安装docker,可以查看这篇文章《使用阿里云镜像快速安装docker-ce》

    2、下载并安装minikube

    在github上面下载对应系统的minikube安装文件:https://github.com/kubernetes/minikube/releases
    我这里使用的是minikube-1.18.1-0.x86_64.rpm安装minikube,使用下面的命令下载:

    wget https://github.com/kubernetes/minikube/releases/download/v1.18.1/minikube-1.18.1-0.x86_64.rpm
    # 安装minikube
    sudo rpm -ivh minikube-1.18.1-0.x86_64.rpm
    

    3、启动minikube

    运行下面的命名启动minikube:

    minikube start --driver=docker --registry-mirror=https://registry.docker-cn.com,https://shraym0v.mirror.aliyuncs.com --embed-certs=true --image-mirror-country=cn --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers
    

    参数说明
    可以通过minikube start --help查看其它参数的详细说明,这里说明上面使用的参数

    • minikube start:启动一个本地单节点kubernetes集群。
    • --driver=docker:指定驱动为docker,默认为自动检测(virtualbox, vmwarefusion, hyperv, vmware, docker, ssh)中的一个。
    • --registry-mirror=https://registry.docker-cn.com:使用国内的镜像地址来提高拉取镜像的速度,可以设置多个用,分割即可。
    • --embed-certs=true:如果为true,将在kubeconfig中嵌入证书,默认为false,在kubeconfig中将以绝对路径的方式读取证书文件。
    • --image-mirror-country=cn:需要使用的镜像的国家/地区代码,留空以使用全球代码,对于中国大陆用户,请将其设置为 cn
    • --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers:设置用来拉取 Kubernetes 集群所需镜像的仓库,如果无法访问gcr.io可以设置为 "auto" 让minikube 为你自动选择可以访问的镜像仓库。对于中国大陆用户可以设置registry.cn-hangzhou.aliyuncs.com/google_containers,但是我设置此参数导致有的镜像无法拉取。

    遇到的问题

    1、 不能使用root用户启动docker driver

    * minikube v1.18.1 on Centos 7.9.2009 (amd64)
    * Using the docker driver based on user configuration
    * The "docker" driver should not be used with root privileges.
    * If you are running minikube within a VM, consider using --driver=none:
    *   https://minikube.sigs.k8s.io/docs/reference/drivers/none/
    
    X Exiting due to DRV_AS_ROOT: The "docker" driver should not be used with root privileges.
    

    解决方法:

    # 添加一个用户
    adduser minikube
    # 将该用户添加到docker组 --> gpasswd -a 用户名 用户组
    gpasswd -a minikube docker
    # 切换到该用户
    su minikube -
    # 将当前用户切换到docker组
    newgrp - docker
    
    

    2、 检查到Docker cgroup驱动为 "cgroupfs",推荐使用 "systemd"

    警告内容如下:

    [WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver.
     The recommended driver is "systemd". Please follow the guide at https://kubernetes.io/docs/setup/cri/
    

    官方文档表示,更改设置,令容器运行时和kubelet使用systemd作为cgroup驱动,以此使系统更为稳定。
    两种解决方法:
    一、编辑docker配置文件/etc/docker/daemon.json, 添加如下内容:

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

    重启docker

    systemctl daemon-reload
    systemctl restart docker
    

    二、编辑/usr/lib/systemd/system/docker.service

    ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --exec-opt native.cgroupdriver=systemd
    systemctl daemon-reload
    systemctl restart docker
    

    设置完成后通过docker info命令可以看到Cgroup Driver为systemd

    docker info |grep Cgroup
    
    Cgroup Driver: systemd
    Cgroup Version: 1
    

    3、 storage-provisioner无法拉取镜像:ImagePullBackOff

    image.png

    原因分析:
    使用如下命令查看storage-provisioner拉取了哪个镜像:

    kubectl get pod storage-provisioner  -n kube-system -o yaml |grep image
    # 输出如下内容
    image: registry.cn-hangzhou.aliyuncs.com/google_containers/k8s-minikube/storage-provisioner:v4
    

    使用如下命令登录minikube节点,尝试手动拉取镜像:

    # 登录minikube节点
    $ minikube ssh
    # 手动拉取镜像 任然无法拉取
    $ docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/k8s-minikube/storage-provisioner:v4
    Error response from daemon: pull access denied for registry.cn-hangzhou.aliyuncs.com/google_containers/k8s-minikube/storage-provisioner, repository does not exist or may require 'docker login': denied: requested access to the resource is denied
    

    查看minikube中拉取的镜像,发现问题的原因:storage-provisioner已经正常拉取下来了,原来的镜像标签中多了一级路径k8s-minikube

    image.png
    解决方式
    使用如下命令修改storage-provisioner的部署文件
    将原来的registry.cn-hangzhou.aliyuncs.com/google_containers/k8s-minikube/storage-provisioner:v4
    修改为:registry.cn-hangzhou.aliyuncs.com/google_containers/storage-provisioner:v4
    kubectl edit pod storage-provisioner  -n kube-system
    
    image.png

    4、安装并配置kubectl

    查看kubernetes官网地址:https://kubernetes.io/zh/docs/tasks/tools/install-kubectl/
    1、使用下面命令下载最新的发行版本:

    curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
    

    要下载特定版本,将命令中的 $(curl -L -s https://dl.k8s.io/release/stable.txt) 部分替换为指定版本。
    例如,要下载 Linux 上的版本 v1.20.0,输入:

    curl -LO https://dl.k8s.io/release/v1.20.0/bin/linux/amd64/kubectl
    

    2、安装kubeclt

    sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
    

    3、查看kubectl的版本

    kubectl version --client
    

    5、启动minikube helm3插件

    helm3 新特性

    1. 去除Tiller 和 helm serve
    现在helm命令通过kubeconfig 直接操作k8s集群,类似于kubectl
    Helm使用与kubectl上下文相同的访问权限,也无需再使用helm init来初始化Helm
    这点在helm部署和使用上方便了很多,也减少了服务发布可能遇到的因为tiller引起的异常
    而且移除了 helm serve 的功能,不再本地提供chart仓库能力

    2. 预定义仓库被移除,添加helm hub
    helm search 现在区分 repo 和hub
    repo 是自己手动添加的源
    hub 是公共的helm仓库
    手动添加阿里云的charts仓库

    helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
    

    3. Values 支持 JSON Schema 校验器
    当我们运行 helm install 、 helm upgrade 、 helm lint 、 helm template 命令时,JSON Schema 的校验会自动运行,如果失败就会立即报错,这样等于是先都校验了一遍,再创建。

    4. helm install 时需要指定 Release Name,开启自动生成需要 --generate-name 参数

    安装helm

    下载helm客户端https://github.com/helm/helm/releases
    helm安装官方文档https://helm.sh/docs/intro/install/
    选择对应系统的helm客户端下载,我这里使用下面的命令下载:

    # 下载helm
    wget https://get.helm.sh/helm-v3.5.3-linux-amd64.tar.gz 
    # 解压
    tar -zxvf helm-v3.5.3-linux-amd64.tar.gz
    # 在解压目录下找到helm二进制文件,将helm移动到指定目录
    mv linux-amd64/helm /usr/local/bin/helm
    # 验证helm
    helm version
    version.BuildInfo{Version:"v3.5.3", GitCommit:"041ce5a2c17a58be0fcd5f5e16fb3e7e95fea622", GitTreeState:"dirty", GoVersion:"go1.15.8"}
    

    helm使用简单介绍
    helm是k8s的包管理工具
    helm的常用命令:

    • helm search: search for charts
    • helm pull: download a chart to your local directory to view
    • helm install: upload the chart to Kubernetes
    • helm list: list releases of charts

    相关文章

      网友评论

          本文标题:在linux系统中安装minikube

          本文链接:https://www.haomeiwen.com/subject/sjaykltx.html