在Kubernetes中部署应用(三)

目标

  • 学习了解应用的部署
  • 使用 kubectl 在 Kubernetes 上部署第一个应用

Kubernetes 部署

Deployment 负责创建和更新应用程序的实例

一旦运行了 Kubernetes 集群,就可以在其上部署容器化应用程序。 为此,您需要创建 Kubernetes Deployment 配置。Deployment 指挥 Kubernetes 如何创建和更新应用程序的实例。创建 Deployment 后,Kubernetes master 将应用程序实例调度到集群中的各个节点上。

创建应用程序实例后,Kubernetes Deployment 控制器会持续监视这些实例。 如果托管实例的节点关闭或被删除,则 Deployment 控制器会将该实例替换为群集中另一个节点上的实例。 这提供了一种自我修复机制来解决机器故障维护问题。

部署你在 Kubernetes 上的第一个应用程序

在这里插入图片描述

您可以使用 Kubernetes 命令行界面创建和管理 Deployment,Kubectl.Kubectl 使用 Kubernetes API 与集群进行交互。

应用部署实例

  1. 通过运行kubectl version命令,检查kubectl是否配置为与集群对话:
kubectl version

2.要查看群集中的节点,请运行kubectl get nodes命令:

$ kubectl get nodes
NAME       STATUS   ROLES    AGE    VERSION
minikube   Ready    master   3m8s   v1.15.0

在这里,我们看到可用的节点。Kubernetes将根据节点可用资源选择部署应用程序的位置。

  1. 部署我们的应用程序,让我们使用kubectl create deployment命令在Kubernetes上部署第一个应用。我们需要提供部署名称和应用程序镜像位置(包括Docker hub 镜像url)。
$ kubectl create deployment kubernetes-bootcamp --image=gcr.io/google-samples/kubernetes-bootcamp:v1
deployment.apps/kubernetes-bootcamp created
  1. 刚刚通过创建部署来部署了第一个应用程序。搜索可运行应用程序实例的合适Node(我们只有1个可用Node)
    计划应用程序在该Node上运行 将群集配置为在需要时在新Node上重新安排实例

要列出展开,请使用get deployments命令:

$ kubectl get deployments
NAME                  READY   UP-TO-DATE   AVAILABLE   AGE
kubernetes-bootcamp   1/1     1            1           5m24s

我们看到有一个部署正在运行您的应用程序的单个实例。实例正在node上的Docker容器中运行。

  1. 查看应用程序
    运行在Kubernetes内部的pod运行在一个私有的、隔离的网络上。默认情况下,它们在同一个kubernetes集群内的其他pod和服务中可见,但在该网络之外则不可见。当我们使用kubectl时,我们通过一个API端点与我们的应用程序进行交互。

kubectl命令可以创建一个代理,将通信转发到集群范围的专用网络。

我们将打开第二个终端窗口来运行代理。

echo -e "\n\n\n\e[92mStarting Proxy. After starting it will not output a response. Please click the first Terminal Tab\n";
kubectl proxy
$
$ echo -e "\n\n\n\e[92mStarting Proxy. After starting it will not output a response. Please click the first Terminal Tab\n";



Starting Proxy. After starting it will not output a response. Please click the first Terminal Tab

$ kubectl proxy
Starting to serve on 127.0.0.1:8001
echo -e "\n\n\n\e[92mStarting Proxy. After starting it will not output a response. Please click the first Terminal Tab\n";
kubectl proxy
echo -e "\n\n\n\e[92mStarting Proxy. After starting it will not output a response. Please click the first Terminal Tab\n";
kubectl proxy

我们现在在主机(在线终端)和Kubernetes集群之间建立了连接。proxy允许从这些终端直接访问API。
您可以看到通过proxy端点承载的所有这些api。例如,我们可以使用curl命令直接通过API查询版本:

$ curl http://localhost:8001/version
{
  "major": "1",
  "minor": "15",
  "gitVersion": "v1.15.0",
  "gitCommit": "e8462b5b5dc2584fdcd18e6bcfe9f1e4d970a529",
  "gitTreeState": "clean",
  "buildDate": "2019-06-19T16:32:14Z",
  "goVersion": "go1.12.5",
  "compiler": "gc",
  "platform": "linux/amd64"
}$

如果无法访问端口8001,请确保上面启动的kubectl代理正在运行。
API服务器将根据pod名称自动为每个pod创建一个端点,该端点也可以通过代理访问。
首先我们需要获取Pod name,然后将其存储在环境变量Pod_name中:

$ 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-75bccb7d87-zfv7q

注意:检查终端顶部。代理在终端2中运行,最近的命令在终端1中执行。代理仍然在终端2中运行,这允许curl命令使用localhost:8001工作。

参考

kubernetes手册

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值