从零单排minikube安装2022.3.16

410 阅读4分钟

从零单排,欢乐无穷

代码就跟玄学一样,看似有招实则无招

时间:2022.3.16

天气:下雨

心情:撸完代码,不好不坏

下面正式开始,介绍一下我的环境: 我使用的是腾讯云服务器,安装的是 Ubuntu20.04, Docker version 20.10.13, build a224086 ,kuberctl minikube

为了完全同步,下边我详细的列出步骤:

  1. 我们先看一下我们的相关信息是否一致
# 执行下边的命令看看自己的
~ cat /etc/os-release

NAME="Ubuntu"
VERSION="20.04.4 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.4 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
  1. 如果一样下面我们开始安装docker
# 先卸载之前安装的

sudo apt-get remove docker docker-engine docker.io containerd runc
# 更新apt仓库
sudo apt update
# 安装依赖,不要担心一起安装,可能多数我们已经安装了
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
#添加 Docker 的官方 GPG 密钥:

curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
#9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 通过搜索指纹的后8个字符,验证您现在是否拥有带有指纹的密钥。
sudo apt-key fingerprint 0EBFCD88

# 输出的验证信息 
#pub   rsa4096 2017-02-22 [SCEA]\
      9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88\
#uid           [ unknown] Docker Release (CE deb) <docker@docker.com>\
#sub   rsa4096 2017-02-22 [S]
#使用以下指令设置稳定版仓库
sudo add-apt-repository \\
   "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ \\
  $(lsb_release -cs) \\
  stable"
#更新 apt 包索引
sudo apt update
#安装最新版本的 Docker Engine-Community 和 containerd ,或者转到下一步安装特定版本:

sudo apt-get install docker-ce docker-ce-cli containerd.io
# 要安装指定版本的 Docker Engine-Community,请在仓库中列出可用版本,然后选择一种安装。列出您的仓库中可用的版本,apt-cache使用bash解析:
apt-cache madison docker-ce
docker-ce | 5:20.10.13~3-0~ubuntu-focal | https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu focal/stable amd64 Packages
 docker-ce | 5:20.10.12~3-0~ubuntu-focal | https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu focal/stable amd64 Packages
 docker-ce | 5:20.10.11~3-0~ubuntu-focal | https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu focal/stable amd64 Packages
 docker-ce | 5:20.10.10~3-0~ubuntu-focal | https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu focal/stable amd64 Packages
 docker-ce | 5:20.10.9~3-0~ubuntu-focal | https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu focal/stable amd64 Packages
 docker-ce | 5:20.10.8~3-0~ubuntu-focal | https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu focal/stable amd64 Packages
 docker-ce | 5:20.10.7~3-0~ubuntu-focal | https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu focal/stable amd64 Packages
 docker-ce | 5:20.10.6~3-0~ubuntu-focal | https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu focal/stable amd64 Packages
 docker-ce | 5:20.10.5~3-0~ubuntu-focal | https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu focal/stable amd64 Packages
 docker-ce | 5:20.10.4~3-0~ubuntu-focal | https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu focal/stable amd64 Packages
 docker-ce | 5:20.10.3~3-0~ubuntu-focal | https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu focal/stable amd64 Packages
 docker-ce | 5:20.10.2~3-0~ubuntu-focal | https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu focal/stable amd64 Packages
 docker-ce | 5:20.10.1~3-0~ubuntu-focal | https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu focal/stable amd64 Packages
 docker-ce | 5:20.10.0~3-0~ubuntu-focal | https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu focal/stable amd64 Packages
 docker-ce | 5:19.03.15~3-0~ubuntu-focal | https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu focal/stable amd64 Packages
 docker-ce | 5:19.03.14~3-0~ubuntu-focal | https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu focal/stable amd64 Packages
 docker-ce | 5:19.03.13~3-0~ubuntu-focal | https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu focal/stable amd64 Packages
 docker-ce | 5:19.03.12~3-0~ubuntu-focal | https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu focal/stable amd64 Packages
 docker-ce | 5:19.03.11~3-0~ubuntu-focal | https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu focal/stable amd64 Packages
 docker-ce | 5:19.03.10~3-0~ubuntu-focal | https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu focal/stable amd64 Packages
 docker-ce | 5:19.03.9~3-0~ubuntu-focal | https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu focal/stable amd64 Packages
 #这是我查询的docker版本,使用第二列中的版本字符串安装特定版本,例如5:19.03.9~3-0~ubuntu-focal
 

sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io

# 使用docker version 或者docker info
~ docker version
Client: Docker Engine - Community
 Version:           20.10.13
 API version:       1.41
 Go version:        go1.16.15
 Git commit:        a224086
 Built:             Thu Mar 10 14:07:51 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.13
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.15
  Git commit:       906f57f
  Built:            Thu Mar 10 14:05:44 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.5.10
  GitCommit:        2a1d4dbdb2a1030dc5b01e96fb110a9d9f150ecc
 runc:
  Version:          1.0.3
  GitCommit:        v1.0.3-0-gf46b6ba
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
  
  ### 但是刚安装的docker是需要root权限的,而我们一般是以用户权限安装的,所以会报以下的错误:ERROR: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/info": dial unix /var/run/docker.sock: connect: permission denied
  # 安装完docker一般会创建一个docker组,我们一般需要把用户添加到docker组
  
  sudo gpasswd -a $USER docker
  #刷新用户组
  newgrp docker
  #使用docker命令验证
  docker images
  REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
  # 此时docker已经ok了

  1. 安装minikube
# 2 个 CPU 或更多
# 2GB 可用内存
# 20GB 可用磁盘空间
# 网络连接
# 容器或虚拟机管理器,例如:[Docker]
#下载二进制的minikube
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
mv minikube-linux-amd64 minikube
chmod +x minikube
# 我使用的是gopath/bin,大家可以把这个命令放到PATH目录中
mv minikube go/bin
minikube version
# minikube version: v1.25.2
# commit: 362d5fdc0a3dbee389b3d3f1034e8023e72bd3a7

#下载指定版本的镜像minikube:https://github.com/kubernetes/minikube/releases/tag/v1.23.0

~ minikube start
😄  minikube v1.25.2 on Ubuntu 20.04 (amd64)
✨  Automatically selected the docker driver. Other choices: none, ssh
👍  Starting control plane node minikube in cluster minikube
🚜  Pulling base image ...
💾  Downloading Kubernetes v1.23.3 preload ...
    > preloaded-images-k8s-v17-v1...: 505.68 MiB / 505.68 MiB  100.00% 12.18 Mi
    > index.docker.io/kicbase/sta...: 379.06 MiB / 379.06 MiB  100.00% 2.90 MiB
❗  minikube was unable to download gcr.io/k8s-minikube/kicbase:v0.0.30, but successfully downloaded docker.io/kicbase/stable:v0.0.30 as a fallback image
🔥  Creating docker container (CPUs=2, Memory=2200MB) ...
❗  This container is having trouble accessing https://k8s.gcr.io
💡  To pull new external images, you may need to configure a proxy: https://minikube.sigs.k8s.io/docs/reference/networking/proxy/
🐳  Preparing Kubernetes v1.23.3 on Docker 20.10.12 ...
    ▪ kubelet.housekeeping-interval=5m
    ▪ Generating certificates and keys ...
    ▪ Booting up control plane ...
    ▪ Configuring RBAC rules ...
🔎  Verifying Kubernetes components...
    ▪ Using image gcr.io/k8s-minikube/storage-provisioner:v5
🌟  Enabled addons: default-storageclass, storage-provisioner

❗  /home/lighthouse/go/bin/kubectl is version 1.15.0, which may have incompatibilites with Kubernetes 1.23.3.
#这句提示我的kubectl与minikube的版本可能不兼容
    ▪ Want kubectl v1.23.3? Try 'minikube kubectl -- get pods -A'
🏄  Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default



  1. 安装kubectl
# 俩种方式安装kubectl:二进制,或者使用minikube安装;
#使用minikube安装

minikube kubectl -- get po -A
# 把下面的命令添加到 bashrc或者zshrc中,然后source,其实为了和minikube完美契合可以使用这样的方式,
alias kubectl="minikube kubectl --"


# 下载二进制的kubectl
wget -c "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl
mv kubectl go/bin
# 下载指定的版本如果要下载指定版本的发行版,可以执行如下命令,以下载 v1.21.0为,只需要更改url中版本号

wget -c https://dl.k8s.io/release/v1.21.0/bin/linux/amd64/kubectl


kubectl version -o json

{
  "clientVersion": {
    "major": "1",
    "minor": "23",
    "gitVersion": "v1.23.4",
    "gitCommit": "e6c093d87ea4cbb530a7b2ae91e54c0842d8308a",
    "gitTreeState": "clean",
    "buildDate": "2022-02-16T12:38:05Z",
    "goVersion": "go1.17.7",
    "compiler": "gc",
    "platform": "linux/amd64"
  },
  "serverVersion": {
    "major": "1",
    "minor": "23",
    "gitVersion": "v1.23.3",
    "gitCommit": "816c97ab8cff8a1c72eccca1026f7820e93e0d25",
    "gitTreeState": "clean",
    "buildDate": "2022-01-25T21:19:12Z",
    "goVersion": "go1.17.6",
    "compiler": "gc",
    "platform": "linux/amd64"
  }
}

kubectl get po -A
kubectl cluster-info
kubectl get node -A
  1. 安装virtualBox(低版本minikube必须)

新版本的Minikube已经不需要再依赖于VM做为底层,也可以通过docker直接作为底层驱动,并且在起步资源方面需求量更小

  1. 管理minikube

在不影响已部署应用程序的情况下暂停 Kubernetes:

minikube pause

取消暂停暂停的实例:

minikube unpause

停止集群:

minikube stop

增加默认内存限制(需要重新启动):

minikube config set memory 16384

浏览易于安装的 Kubernetes 服务目录:

minikube addons list

创建第二个运行旧 Kubernetes 版本的集群:

minikube start -p aged --kubernetes-version=v1.16.1

删除所有 minikube 集群:

minikube delete --all
  1. 至此环境已经好了。