网站开发知识体系,网站建设的拓扑结构,ic千库网,婚礼策划网站建设作者 | 洲的学习笔记来源 | CSDN博客本篇文章主要是实战 Kubectl 创建 Deployment 部署应用。通过本期文章#xff1a;我们将学习创建在 Kubernetes 集群上运行应用程序的 Deployment 所需的最常见的 Kubectl 命令。用 Kubectl 创建 Deployment当运行 Kubernetes 集群#xf… 作者 | 洲的学习笔记来源 | CSDN博客本篇文章主要是实战 Kubectl 创建 Deployment 部署应用。通过本期文章我们将学习创建在 Kubernetes 集群上运行应用程序的 Deployment 所需的最常见的 Kubectl 命令。用 Kubectl 创建 Deployment当运行 Kubernetes 集群就可以在其上部署容器化应用程序。此时需要我们创建 Kubernetes Deployment 配置。Deployment 指挥 Kubernetes 如何创建和更新应用程序的实例。创建 Deployment 后Kubernetes master 将应用程序实例调度到集群中的各个节点上。创建应用程序实例后Kubernetes Deployment 控制器会持续监视这些实例。如果托管实例的节点关闭或被删除则 Deployment 控制器会将该实例替换为集群中另一个节点上的实例。这提供了一种自我修复机制来解决机器故障维护问题。在没有 Kubernetes 这种编排系统之前安装脚本通常用于启动应用程序但它们不允许从机器故障中恢复。通过创建应用程序实例并使它们在节点之间运行 Kubernetes Deployments 提供了一种与众不同的应用程序管理方法。1、部署第一个在K8s上的应用程序接下来将使用 Kubernetes 命令行界面 Kubectl 创建和管理 Deployment。Kubectl 使用 Kubernetes API 与集群进行交互。将学习创建在 Kubernetes 集群上运行应用程序的 Deployment 所需的最常见的 Kubectl 命令。实战部署1、查看Kubectl配置Kubectl命令的常见格式是:Kubectl action resource。这将对指定的资源(如节点、容器)执行指定的操作(如创建、描述)。我们也可以在命令之后使用——help来获得关于可能参数的额外信息(kubectl get nodes——help)。通过运行kubectl version命令检查kubectl是否被配置为与集群通信$ kubectl version
Client Version: version.Info{Major:1, Minor:20, GitVersion:v1.20.4, GitCommit:e87da0bd6e03ec3fea7933c4b5263d151aafd07c, GitTreeState:clean, BuildDate:2021-02-18T16:12:00Z, GoVersion:go1.15.8, Compiler:gc, Platform:linux/amd64}
Server Version: version.Info{Major:1, Minor:20, GitVersion:v1.20.2, GitCommit:faecb196815e248d3ecfb03c680a4507229c2a56, GitTreeState:clean, BuildDate:2021-01-13T13:20:00Z, GoVersion:go1.15.5, Compiler:gc, Platform:linux/amd64}通过上述代码可以看到Kubectl已经安装可以看到客户端和服务器版本。2、查询集群中节点信息接下来我们需要查询集群中的节点信息使用Kubectl get nodes命令。$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
minikube Ready control-plane,master 3m44s v1.20.2
$通过上述的命令可以看到可用的节点。Kubernetes将根据Node可用资源选择部署我们的应用程序的位置。3、部署程序应用现在需要使用Kubectl创建部署命令在Kubernetes上部署我们的第一个应用程序。我们需要提供部署名称和应用程序映像位置(包括Docker中心之外托管的映像的完整存储库url)。命令如下kubectl create deployment kubernetes-bootcamp --imagegcr.io/google-samples/kubernetes-bootcamp:v1
deployment.apps/kubernetes-bootcamp created上一个命令为我们实现了搜索可以运行应用程序实例的合适节点(本次实验环境只有1个可用节点)。计划应用程序在该节点上运行。配置集群在需要时在新节点上重新计划实例。现在要列出部署使用kubectl get deployments部署命令$ kubectl get deployments
NAME READY UP-TO-DATE AVAILABLE AGE
kubernetes-bootcamp 1/1 1 1 80s可以看到有一个部署运行着你的应用程序的单个实例。这个实例运行在节点上的Docker容器中。4、查看部署的程序Kubernetes内部运行的Pods是在一个私有的、孤立的网络上运行的。默认情况下它们对同一个kubernetes集群内的其他pods和服务是可见的但在该网络之外是不可见的。当使用Kubectl时通过一个API端点与应用程序进行交互。Kubectl命令可以创建一个将通信转发到集群范围的私有网络的代理。该代理可以通过按control-C终止并且不会显示任何内容。现在将打开第二个终端窗口来运行代理。echo -e \n\n\n\e[92mStarting Proxy. After starting it will not output a response. Please click the first Terminal Tab\n;现在我们主机(在线终端)和Kubernetes集群之间有了连接。代理允许从这些终端直接访问API。可以看到通过代理端点托管的所有api。比如可以使用curl命令curl http://localhost:8001/version直接通过API查询版本$ curl http://localhost:8001/version
{
major: 1,
minor: 20,
gitVersion: v1.20.2,
gitCommit: faecb196815e248d3ecfb03c680a4507229c2a56,
gitTreeState: clean,
buildDate: 2021-01-13T13:20:00Z,
goVersion: go1.15.5,
compiler: gc,
platform: linux/amd64
$需要注意的是需要检查终端顶部。代理在一个新选项卡(终端2)中运行最近的命令在原始选项卡(终端1)中执行。代理仍然在第二个选项卡中运行这允许curl命令使用localhost:8001工作。如果无法访问端口8001请确保上面启动的kubectl代理正在运行。API服务器将根据pod名称自动为每个pod创建一个端点这个端点也可以通过代理访问。首先需要获取Pod名称并将其存储在环境变量POD_NAME中使用**export POD_NAME$(kubectl get pods -o go-template --template ‘{{range .items}}{{.metadata.name}}{{“\n”}}{{end}}’)**命令$ export POD_NAME$(kubectl get pods -o go-template --template {{range .items}}{{.metadata.name}}{{\n}}{{end}})
$ echo Name of the Pod: $POD_NAME
Name of the Pod: kubernetes-bootcamp-57978f5f5d-mhtpf可以通过运行下面的API来访问Podcurl http://localhost:8001/api/v1/namespaces/default/pods/$POD_NAME/为了在不使用代理的情况下访问新部署需要一个服务这一点我们将在下一篇文章中进行讲解。总结通过本篇文章我们已经大致了解到了如何在实战中Kubectl创建Deployment部署应用。也学习熟悉了创建在 Kubernetes 集群上运行应用程序的 Deployment 所需的最常见的 Kubectl 命令。往期推荐Redis 内存优化神技小内存保存大数据使用 nginx 轻松管理 kubernetes 资源文件Redis 内存满了怎么办这样置才正确中间表是如何被消灭的点分享点收藏点点赞点在看