Minikube 是一个迷你版的 k8s,部署极其简单(相较于正常一套完整的k8s系统而言),对于想要学习k8s或者本地开发调试的人而言都是一个非常不错的选择。
注:以下操作均基于 CentOS 7,其他发型版流程大致一样,不过包管理部分会略有差异
安装容器引擎: Docker
Kubernetes 是一个容器编排调度系统,但是容器实体还是需要其他系统来创建的,常见的有如:docker
、virtual box、kata
等,这里我们以最常见的 docker
为例进行安装,如果系统上已经安装好了的话可以直接跳过,配置一下用户即可:
# 若安装过docker,需要先删掉,之后再安装依赖:
sudo yum remove docker docker-common docker-selinux docker-engine
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# 根据版本不同,下载repo文件
sudo wget -O /etc/yum.repos.d/docker-ce.repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 更新索引文件并安装
sudo yum makecache fast
# 安装,docker-ce 是服务端,docker-ce-cli 是客户端,即我们平常看到的 docker 命令行程序
sudo yum install -y docker-ce docker-ce-cli
这样我们就安装完成了,yum
包安装的时候已经帮我们配置好了 systemd
的 service
,我们直接启动即可,然后用客户端连服务端获取一下在线容器,没有报错就意味着安装很顺利:
sudo systemctl start docker
docker ps
默认去 DockerHub
拉取镜像时会很慢,我们再配置一下网易的镜像进行加速:
sudo mkdir -p /etc/docker
sudo echo '{"registry-mirrors": ["http://hub-mirror.c.163.com"]}' > /etc/docker/daemon.json
这里还有一个问题需要注意一下,如果你是使用的 root 账号操作的话,会有一个问题,minikube 不能以 root 权限启动,需要创建一个其他用户然后切过去,不过这个用户是无法通过 docker 客户端跟服务端 /var/run/docker.sock
连接的,因为这个socket是 root 创建的,所以我们对应的也要给予这个用户访问 docker 的权限,这里我们以创建一个叫 developer 的用户为例:
# 创建用户
sudo adduser developer
# 创建组 docker
sudo groupadd docker
# 把 developer 加到 docker 这个组里面去
sudo usermod -aG docker developer
# 重启 docker,使得 /var/run/docker.sock 的用户组变更
sudo systemctl restart docker.socket docker
# 然后切过去验证一下
su developer
docker ps
安装Minikube
下面我们来开始安装 minikube
,minikube 后来添加了对于国内网络环境的支持,因此我们直接下载官方的二进制即可:
# 可以自行替换 latest 为指定的版本号,如:v1.20.0 v1.18.1 v1.16.0
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
chmod +x minikube && sudo mv minikube /usr/local/bin/
然后我们需要切换到 developer 用户来启动 minikube:
# 切换用户
su - developer
# 启动 minikube,指定使用国内镜像
minikube start --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers --image-mirror-country=cn
这一步要下的镜像比较大,会花费比较长的时间,可以提前配置一下下文的 kubectl。
等 minikube 启动完成之后,理论上我们就能直接通过 kubectl 和其交互了,可以获取所有实例验证一下:
minikube kubectl get pod -A
到这里我们的 minikue 就已经安装完成了。
体验 Kubernetes
安装 Kubectl
kubectl 之于 kubernetes 就像 docker cli 之于 docker dameon,提供了用命令行和 kubernetes 交互的方式,虽然 minikube 里面自带了一个 kubectl,不过用起来总归是比较麻烦,我们可以自行下载一个单独的:
# 下载
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl && sudo mv kubectl /usr/local/bin/
如果我们当前用户不是 developer 的话,需要手动把 kubectl 的配置复制一份到当前用户下,这里面保存了 mikube
的 api
地址以及对应的证书:
cp -r /home/developer/.kube ~/
验证一下:
kubectl get pod -A
配置kubectl 自动补全
一直敲 kubectl 命令是一件很枯燥的事情,不过我们可以配置自动补全来减轻部分工作量,以 zsh 为例,bash 可以自行参考官方文档
echo "source <(kubectl completion zsh)" >> ~/.zshrc
可视化观察Kubenetes
对于刚接触一个新系统的人而言,能有一个 GUI 页面交互是能远比命令行更快的熟悉的,k8s 的可视化管理后台有很多种,比如:kubesphere、kuboard、rancher 等等,不过这些都比较重,minikube 直接集成了轻量级的 Dashboard,我们可以直接使用:
minikube dashboard
剩下的想要继续探索学习 K8S 的话,可以对着官方文档结合 dashboard 一路看下来,hava a fun on kubernetes ~