上一篇我们讲到使用Docker来创建容器并发布了一个公告板应用程序,这一篇将使用Kubernetes编排工具来管理容器。Kubernetes在可扩展、网络互联、安全和维护容器化应用程序提供了很多工具接口,而这些已远超出了docker容器本身的能力。
为了验证我们应用程序在Kubernetes上是否运行正常,我们将在开发机器上使用Docker Desktop内置的Kubernetes环境来部署我们的应用程序,然后将其交付到生产中的完整Kubernetes集群上运行。Docker Desktop中的Kubernetes功能特性与生产Kubernetes集群是一致的,所以,即便是在开发环境上,您的应用程序也享有了生产Kubernetes集群所有功能。
使用YAML来创建应用
1、创建一个名为bb.yaml的文件,如图1.1所示。
apiVersion: apps/v1
kind: Deployment
metadata:
name: bb-demo
namespace: default
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
图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对象所需的配置。
发布并测试您的应用
1、在bb.yaml所在目录,执行如下命令。
# kubectl应用- f bb.yaml
当您看到如下输出,则表示应用发布成功。
部署。应用程序/bb-demo创建
服务/bb-entrypoint创建
2,执行如下命令,确保部署正常。
# kubectl得到部署
如果输出信息如下,则表示运行正常。
名称准备最新的可用年龄
bb-demo 1/1 1 80 m
3,执行如下命令查看服务服务信息
# kubectl得到服务
输出信息如下
名称类型集群ip外部ip端口(S)年龄
bb-entrypoint NodePort 10.99.53.144 & lt; none>8080:30001/TCP 20 s
kubernetes ClusterIP 10.96.0.1 & lt; none>443/TCP 24 h
可以看到我们发布的服务服务bb-entrypoint,对外提供访问端口是30001年,NodePort默认端口范围是:30000 - 32767,可以通过kube-apiserver命令(该命令在apiserver容器中)输出得知
——service-node-port-range portRange
准备服务的端口范围NodePort可见性。例如:“30000 - 32767”。包容的范围的两端。(默认30000 - 32767)
4,通过http://localhost: 30001年来访问您的应用,您将看到如下界面,如1.2图所示,则表示应用部署成功,接下来就是进行测试,构建,发布,分享等过程。
1.2图5,删除应用,可以使有如下命令
# kubectl删除- f bb。yaml
或者
# kubectl删除部署bb-demo
# kubectl删除服务bb-entrypoint
如下图1.3所示。
1.3图到此,我们已经成功地使用码头工人桌面将我们的应用程序部署到开发机器的Kubernetes环境中。我们还没有对Kubernetes做太多的工作,但现在大门已经打开,您可以开始在您的应用程序中添加其他组件,并使用Kubernetes的所有功能。除此之外,我们还应加强对yaml文件学习理解。
注意:yaml文件是可以根据现有正在运行的部署,服务来生成模板的,然后在此模版基础上进行修改。