从零单排,欢乐无穷
代码就跟玄学一样,看似有招实则无招
时间:2022.3.16
天气:下雨
心情:撸完代码,不好不坏
下面正式开始,介绍一下我的环境: 我使用的是腾讯云服务器,安装的是
Ubuntu20.04, Docker version 20.10.13, build a224086 ,kuberctl minikube
为了完全同步,下边我详细的列出步骤:
- 我们先看一下我们的相关信息是否一致
# 执行下边的命令看看自己的
~ 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
- 如果一样下面我们开始安装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了
- 安装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
- 安装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
- 安装virtualBox(低版本minikube必须)
新版本的Minikube已经不需要再依赖于VM做为底层,也可以通过docker直接作为底层驱动,并且在起步资源方面需求量更小
- 管理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
- 至此环境已经好了。