现在网上已经有很多讲解k8s的文档与教程,对于大家学习k8s很有帮助,我也是通过这些文档和教程来学习的。但是要想深入理解k8s的机制和云原生技术,离不开大量的实践。网上也有很多java的实践案例,但是作为一个C++开发者,我更希望能够从部署一个复杂的C++应用的角度来深入理解k8s。下面我会通过由简入难的一些C++应用案例来阐述k8s的概念和实现机制。
一、win7-x64系统部署minikube环境
首先我们需要一个k8s的运行环境,minikube是一个单机版的k8s,很适合初学者使用,网上比较少win7系统上安装minikube的例子,下面介绍一下win7 64位系统上部署minikube。
1、安装minikube和docker
1)下载安装virtualbox最新版本,地址https://www.virtualbox.org/wiki/Downloads
2)下载minikube,地址:
https://github.com/kubernetes/minikube/releases/download/v1.7.3/minikube-windows-amd64.exe%20 3)下载kubectl,通过curl下载,curl下载地址:
curl -LO https://dl.k8s.io/release/v1.20.0/bin/windows/amd64/kubectl.exe
curl -LO https://dl.k8s.io/v1.20.0/bin/windows/amd64/kubectl.exe.sha256
CertUtil -hashfile kubectl.exe SHA256
type kubectl.exe.sha256
4)安装docker,由于Docker Desktop无法在win7下安装(只能在win10),所以从阿里云上下载DockerToolBox最新版本安装,地址:http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/?spm=5176.8351553.0.0.4bc61991tQpsnV
5)新建目录c:\minikube,把minikube-windows-amd64.exe拷贝到该目录,改名为minikube.exe,把kubectl.exe和kubectl.exe.sha256也拷贝到该目录。
2、启动minikube
部署完成后执行命令minikube start会在virtualbox中启动一个名为minikube的linux系统虚拟机。
执行minikube status命令可以查看minikube的状态。
也可以通过dashboard插件来查看minikube的状态,WEB页面看起来更直观。执行minikube addons list命令可以查看minikube的各种插件是否打开。如下图,dashboard插件没有打开。
执行minikube addons enable dashboard命令打开dashboard。
执行minikube dashboard可以运行dashboard,如下图所示。
minikube启动后,可以通过kubectl命令访问,执行kubectl version命令查询cli和minikube server版本号。
执行kubectl get nodes命令可以看到k8s的master和node部署在一台单机上。
3、docker配置
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
执行docker images命令可以查看docker仓库中的所有镜像。由于在当前系统中安装了docker,相关环境变量已经写入系统。所以系统会直接找本地的docker服务器。192.168.99.101为本地docker服务器地址。
点击“Docker Quickstart Terminal”图标会启动本地docker服务器,实际上是创建并运行了一个虚拟机default在virtualbox上。
此时在命令行输入docker images是查询本地docker虚拟机中的所有镜像文件。
而我们需要使用的是minikube虚拟机中的docker engine,这个地方很容易搞错。其实我们安装docker只需要用到它的客户端,minikube中是包含了一个docker engine server的,我们需要用到的是minikube中的docker engine。可以使用minikube docker-env命令获取minikube中的docker engine的环境变量,然后在本机执行,注意这个设置只对本命令行窗口有效。然后docker images才是查询minikube docker中的所有镜像文件。
至此,minikube环境就部署好了,下面就可以编写一些简单的代码来理解k8s的各种概念和它们的运行机制。