Kubernetes部署您的第一个应用程序

上一篇咱们讲到使用Docker来建立容器并发布了一个公告板应用程序,这一篇将使用Kubernetes编排工具来管理容器。Kubernetes在可扩展、网络互联、安全和维护容器化应用程序提供了不少工具接口,而这些已远超出了docker容器自己的能力。node

为了验证咱们应用程序在Kubernetes上是否运行正常,咱们将在开发机器上使用Docker Desktop内置的Kubernetes环境来部署咱们的应用程序,而后将其交付到生产中的完整Kubernetes集群上运行。Docker Desktop中的Kubernetes功能特性与生产Kubernetes集群是一致的,因此,即使是在开发环境上,您的应用程序也享有了生产Kubernetes集群全部功能。web

使用YAML来建立应用docker

一、建立一个名为bb.yaml的文件,如图1.1所示。api

apiVersion: apps/v1安全

kind: Deployment网络

metadata:并发

name: bb-demoapp

namespace: defaultide

spec:工具

replicas: 1

selector:

matchLabels:

bb: web

template:

metadata:

labels:

bb: web

spec:

containers:

- name: bb-site

image: bulletinboard:1.0

---

apiVersion: v1

kind: Service

metadata:

name: bb-entrypoint

namespace: default

spec:

type: NodePort

selector:

bb: web

ports:

- port: 8080

targetPort: 8080

nodePort: 30001

4bbf48f3b7fb469e85f757f2c845be6c

图1.1

上述Kubernetes的YAML文件具备2个对象结构,使用“---”做为分隔符,若YAML文件中仅有一个对象,则分隔符能够省略。

Deployment对象描述建立一个pod组,该pod组中的容器副本数为1个,而后基于镜像bulletinboard:1.0来建立。

Service对象描述了建立一个NodePort类型的服务,该服务用于将流量从宿主机上的30001端口路由到pods内容器的8080端口,容许您从宿主机的IP:30001访问公告板应用程序。

Kubernetes YAML一开始看起来很长很复杂,但它几乎老是遵循相同的模式

(1)、apiVersion用于指定Kubernetes API的版本

(2)、kind用于指定资源类型,能够是Deployment、Service、Namespace、ConfigMap、ServiceAccount等。

(3)、metadata,指定Pod的元数据信息,包括name、namespace、labels等。

(4)、spec,指定容器container、存储storage、卷volume以及其余kubernetes对象所需的配置。

发布并测试您的应用

一、在bb.yaml所在目录,执行以下命令。

# kubectl apply -f bb.yaml

当您看到以下输出,则表示应用发布成功。

deployment.apps/bb-demo created

service/bb-entrypoint created

二、执行以下命令,确保部署正常。

# kubectl get deployments

若是输出信息以下,则表示运行正常。

NAME READY UP-TO-DATE AVAILABLE AGE

bb-demo 1/1 1 1 80m

三、执行以下命令查看service服务信息

# kubectl get services

输出信息以下

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE

bb-entrypoint NodePort 10.99.53.144 <none> 8080:30001/TCP 20s

kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 24h

能够看到咱们发布的service服务bb-entrypoint,对外提供访问端口是30001,NodePort默认端口范围是:30000-32767,能够经过kube-apiserver命令(该命令在apiserver容器中)输出得知

--service-node-port-range portRange

A port range to reserve for services with NodePort visibility. Example: '30000-32767'. Inclusive at both ends of the range. (default 30000-32767)

四、经过http://localhost:30001来访问您的应用,您将看到以下界面,如图1.2所示,则表示应用部署成功,接下来就是进行测试、构建、发布、分享等过程。

7ff114689b8a44948eb4e338ae0fce19

图1.2

五、删除应用,可使有以下命令

# kubectl delete -f  bb.yaml

或者

# kubectl delete deploy bb-demo
# kubectl delete service bb-entrypoint

以下图1.3所示。

4b84a8c33c3a4b8f94bcd056b86c6a27

图1.3

到此,咱们已经成功地使用Docker Desktop将咱们的应用程序部署到开发机器的Kubernetes环境中。咱们尚未对Kubernetes作太多的工做,但如今大门已经打开,您能够开始在您的应用程序中添加其余组件,并使用Kubernetes的全部功能。除此以外,咱们还应增强对YAML文件学习理解。

注意:YAML文件是能够根据现有正在运行的deploy、pod、service来生成模板的,而后在此模版基础上进行修改。

相关文章
相关标签/搜索