此示例Kubernetes实现演示了如何在Windows10上创建单节点集群以启动和运行容器化应用程序。Kubernetes使开发人员和系统管理员能够快速部署应用程序并根据需要扩展它们,而无需停机。Kubernetes系统是高度可配置的,几乎一切都围绕着四个重要概念:节点、pod、部署和服务。准备好进入Kubernetes的世界了吗?以下是入门的关键步骤和Kubernetes命令。了解Kubernetes架构的基础知识首先,了解Kubernetes系统的基础知识很有用。运行容器的服务器及其内部的应用程序称为节点。主服务器控制、管理和配置这些节点服务器。主节点还管理Pod,或驻留在节点上的一组一个或多个容器。主服务器充当Kubernetes集群的控制平面。控制平面中各个组件的主要目的是维护所有Kubernetes对象的记录,并通过自动响应变化来持续管理集群所需的状态。控制平面有四个主要组件:Etcd:Kubernetes集群最基本的组件etcd是一个轻量级、可用的配置存储。它可以跨多个Kubernetes节点设置。它的主要目的是存储Kubernetes集群中每个节点都可以访问的配置数据。Kube-apiserver:这是一个用于命令行工具(如kubectl)的RESTful接口,为它们提供了一种与Kubernetes集群交互的方式。简单来说,它作为各种工具的管理点,通过RESTAPI控制和配置Kubernetes集群。Kubecontrollermanagement:这个服务的主要作用是维护集群的状态,比如replicas的数量。如果观察到所需状态发生任何变化,kube-controller-manager将运行所需的进程以确保满足所需状态。KubeScheduler:该组件的主要职责是根据配置、资源需求和工作负载特定要求来调度集群工作负载。节点服务器有几个组件,使它们可供主服务器使用。其中包括:容器运行时:要运行封装在存在于节点上的pod中的应用程序,我们需要一个轻量级、隔离的操作环境:容器。容器运行时是一种工具,例如Docker,用于创建、部署和运行应用程序。Kubelet:Kubelet是安装在节点上的代理或服务,用于与主节点通信并接收来自主节点的命令。它指导需要在节点上执行的操作,例如创建、缩放和删除容器。Kube代理:此代理服务将请求中继到正确的容器并执行负载平衡。Kube-proxy还执行主机级子网划分,以确保其他组件可以访问服务。Kubernetes实施步骤在本教程中,我们将创建一个在Windows10操作系统上运行的单节点集群。要在Windows上安装和设置Kubernetes,请加载kubectl并安装minikube。Chocolatey包管理器在此过程中提供帮助。命令行工具kubectl针对Kubernetes集群运行命令,而minikube是使我们能够在机器上的VM中运行单节点集群的工具。输入命令:chocoinstallKubernetes-climinikube这将返回如下所示的输出:现在,运行以下命令并验证您的机器上是否安装了kubectl:kubectl.exeversion--client您必须看到类似于以下屏幕截图的输出:下一步向下,在Kubernetes中启动一个worker-或节点。它可以是物理机,也可以是虚拟机。为此,请使用以下命令启动minikube:minikubestart这将返回如下所示的输出:由于我们在Windows上安装Kubernetes,因此使用Hyper-V启动VM并在VM上设置Kubernetes集群。这样就完成了设置。如何在Kubernetes中运行容器要启动容器,请使用下面的Kubernetes命令创建部署。提供部署名称和要部署的容器映像。Kubernetes会自动选择Docker作为默认容器运行时。在这里,我们使用将运行NginxWeb服务器的映像:kubectl.execreatedeploymentmy-nginx--imagenginx创建部署后,Kubernetes将构建Pod来托管应用程序实例。运行之前的命令后立即输入getpods以捕获部署pod时的ContainerCreating状态:kubectl.exegetpods这将在几秒钟内完成,容器状态应更改为“正在运行”:如下所示,替换describe关键字与部署名称一起使用以查看有关部署的更多详细信息:kubectl.exegetdeploymentkubectl.exedescribedeploymenthelloworld-nginx这将返回副本数、所需状态和时间戳等结果:在本Kubernetes实施教程中,我们仅运行容器或Nginx服务器,但有时必须适应增加的工作量和流量。在这种情况下,请增加应用程序实例的数量。这可以通过使用带有--replicas参数的kubectlscaledeployment来实现:kubectl.exescaledeploymenthelloworld-nginx--replicas4检查部署。可以看到应用程序实例的四个副本已经部署:现在,检查Kubernetespod;节点上应该有四个容器运行:启动应用程序并运行运行。接下来,将它们暴露在集群之外以便可以访问应用程序:Kubectl.exeexposeddeploymenthelloworld-nginx--port=80--type=NodePort通过kubectl获取服务命令。这将返回NodePort的服务类型,以在Kubernetes集群的每个节点上暴露端口80。该服务是一个抽象层,它基本上在共享一个IP地址的集群中进行负载平衡和分组多个pod。要在Web浏览器中打开此应用程序,请创建一个代理以将本地端口连接到集群端口,我们在上一步中使用NodePort服务公开了该端口:kubectl.exeport-forwardsvc/helloworld-nginx80:80,如下所示提示:转到您的Web浏览器并打开http://127.0.0.1/或http://localhost/以查看部署在Kubernetes容器中的NginxWeb服务器的主页。测试Kubernetes控制平面最后,测试Kubernetes控制平面或主服务器是否能够维持在节点服务器上运行的pod的所需状态。要检查这一点,请使用以下命令强制删除运行应用程序实例的容器之一:新实例:
