在OSX上使用Minikube学习Kubernetes
说明
在过去的几年中,Kubernetes的知名度有所提高。从小型组织到大型金融机构的数字迁移正在寻求一种更有效的虚拟化和Pivotal的Cloud Foundry解决方案。在这篇文章中,将向我们展示如何在OSX上使用Minikube学习Kubernetes。
Minikube是在Linux,OSX和Windows上本地运行Kubernetes的最受欢迎选择之一,它是一种出色的学习或者开发工具。
入门
为了在Mac上运行Minikube,我们需要满足一些准备工作。安装以下内容以继续本教程。
- 甲骨文VirtualBox
- Brew包管理程序
什么是Minikube
Minikube是作为单个VirtualBox服务器运行的Kubernetes集群。对于那些想要快速弄脏双手的人,这是最推荐的设置之一。
它几乎是功能齐全的Kubernetes版本,可让开发人员快速获得所需的体验。它也是一个出色的开发环境,可节省我们在DigitalOcean,GKE或者EKS上运行托管服务的费用。
包括运行应用程序所需的所有功能,例如Pod,服务,入口控制器,部署,配置映射和服务。
将Minikube与完整安装的Kubernetes分开的唯一一件事是网络层。但是,对于想了解协调器的工程师而言,配置网络配置和策略的复杂性更高。
深入研究Minikube之后,如果我们有足够的冒险性来部署自己的完整Kubernetes集群,我们已经准备了一个教程,用于在Ubuntu 18.04上部署集群。
安装Brew
Brew是OSX的出色软件包管理器。开发人员和DevOps专业人员使用的几乎任何工具都可以在其资源库中找到,这就是为什么在许多教程中都强烈推荐它的原因。
要在OSX上安装Brew,请从Homebrew的官方Git存储库中下载并执行ruby安装脚本。显然,需要Ruby才能完成此任务,但是,大多数现代OSX安装中默认都包含Ruby。
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
安装Kubectl
Kubernetes的几乎所有规格都使用kubectl命令进行管理。该工具在Homebrew的存储库中以kubernetes-cli的名称提供,这是本教程中如何安装kubectl的方法。
brew install kubernetes-cli
要验证安装是否成功以及安装的kubectl版本,请运行以下命令。
kubectl version
安装Minikube
在OSX上安装Minikube的最简单方法是使用Brew。该解决方案在Kubernete的Minikube官方文档中推荐。
brew cask install minikube
使用Minikube运行第一个Kubernetes集群
可以使用随Minikube一起安装的minikube命令来完成构建集群和管理集群的所有繁重工作。
启动集群
启动集群就像运行minikube start命令一样简单。如果集群尚不存在,将创建该集群。
minikube start
Minikube将通过许多步骤来启动Kubernetes集群。以下是创建新集群时的输出示例。
检查Minikube的状态并启动新集群
停止集群
停止集群就像启动集群一样简单,这是使用minikube stop命令完成的。
minikube stop
查看集群状态
可以使用minikube status命令来验证集群状态,以确保其正在运行或者已停止。
minikube status
命令的输出将类似于以下示例
host: Running kubelet: Running apiserver: Running kubectl: Correctly Configured: pointing to minikube-vm at 192.168.99.100
删除集群
使用完集群后,可使用minikube delete命令将其删除。当删除损坏的群集时,此命令也很有用,这将要求我们重新创建一个新群集。
minikube delete
启动Kubernetes仪表板
尽管可以使用kubectl命令查看有关集群的所有信息,但有时可以以图形化方式查看集群,集群和其他资源。
Minikube可以使用minikube仪表板命令启动Kubernetes仪表板。
运行Kubernetes仪表板的Pod将启动,并且新的Internet浏览器窗口将打开其URL。
Minikube推出的Kubernetes仪表板
发射荚
现在,群集已在运行,现在是启动第一个Pod的时候了。为了演示,将部署一个简单的NGINX pod以及服务资源。
对于那些希望使用更高级设置的用户,以下教程可用于NodeJS和WordPress。
- 在Kubernetes中部署NodeJS应用程序
- 将WordPress部署到Kubernetes
- 将WordPress和MySQL 5.7部署到Kubernetes集群
部署Pod
创建一个名为nginx-pod.yml的新文件,然后在我们喜欢的IDE或者文本编辑器中将其打开。
touch nginx.-pod.yml
向其中添加以下内容。
apiVersion: v1 Kind: Pod metadata: name: nginx labels: name: nginx spec: containers: - name: nginx image: nginx ports: - containerPort: 80
保存更改,然后运行以下kubectl命令在Kubernetes中创建资源。
kubectl apply -f nginx-pod.yml
apply命令将根据提供的规格创建一个新的容器。如果已经存在符合规格的Pod,则会更新Pod。
我们可以使用kubectl get pods命令来验证Pod正在运行并且运行状况良好。
kubectl get pods
将Pod作为服务公开
单独使用pod并不是很有用。它们以临时资源的形式存在,这意味着它们不会持续很长时间。从理论上讲,这些牛可以出于任何原因随时放下。默认情况下,存储在其中的所有数据都会丢失。
显然,临时应用程序不是很有用,这就是为什么存在服务资源的原因。服务是将流量转发到Pod的静态端点。服务使用标签添加到吊舱,因此将提供与服务的标签选择器匹配的任何吊舱。
创建一个名为nginx-service.yml的新文件。
touch nginx-service.yml
在我们喜欢的文本编辑器或者IDE中打开它,然后向其中添加以下内容。
apiVersion: v1 kind: Service metadata: name: nginx-service labels: app: nginx spec: selector: app: nginx ports: - port: 80 protocol: TCP name: http
保存更改,然后使用kubectl apply命令创建新的服务资源。
kubectl apply -f nginx-service.yml
恭喜你!我们刚刚将第一个应用程序和服务部署到Kubernetes中。