Kubernetes部署您的第一个应用程序
admin
2023-03-26 22:41:30
0

上一篇我们讲到使用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

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

图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 apply -f bb.yaml

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

deployment.apps/bb-demo created

service/bb-entrypoint created

2、执行如下命令,确保部署正常。

# kubectl get deployments

如果输出信息如下,则表示运行正常。

NAME READY UP-TO-DATE AVAILABLE AGE

bb-demo 1/1 1 1 80m

3、执行如下命令查看service服务信息

# kubectl get services

输出信息如下

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

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

kubernetes ClusterIP 10.96.0.1 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)

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

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

图1.2

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

# kubectl delete -f  bb.yaml

或者

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

如下图1.3所示。

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

图1.3

到此,我们已经成功地使用Docker Desktop将我们的应用程序部署到开发机器的Kubernetes环境中。我们还没有对Kubernetes做太多的工作,但现在大门已经打开,您可以开始在您的应用程序中添加其他组件,并使用Kubernetes的所有功能。除此之外,我们还应加强对YAML文件学习理解。

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

相关内容

热门资讯

特朗普下令不打了,美国的“余粮... 可以说戛然而止,快得让很多人都无法适应。前两周,每一天美国都要打击伊朗一通。就在7月24日白宫会议前...
穆杰塔巴最新表态:支持黎真主党 △伊朗最高领袖穆杰塔巴·哈梅内伊(资料图)当地时间7月26日晚,伊朗最高领袖穆杰塔巴·哈梅内伊对黎巴...
美军瘫痪一艘驶向伊朗的油轮,特... 美国总统特朗普虽下令暂停打击伊朗,但美军仍在执行对霍尔木兹海峡的封锁任务。针对美军瘫痪一艘驶向伊朗油...
“小牌大耍”的底气到底是哪里来... 澎湃首席评论员 李平这两天,“艺人李权哲乘高铁占座事件”在网上引发热议,该艺人参加的活动主办方曾发布...
越南籍船舶南海遇险沉没,中方已... 据凤凰卫视报道,一艘越南船舶7月24日夜间在越南庆和以东220海里附近遇险沉没,船上共62名越南籍人...
李权哲占座、蒙面、装死:娱乐圈... 你买了一张高铁一等座的票,找到自己的位置,18A。有人坐着。你拿出手机看了眼购票记录——没错,18A...
杭州景区咖啡店闯入1条幼蛇,仅... 夏天气温高、湿度大,蛇类活动进入高峰期,千万别被“小蛇无害”的刻板印象骗了!有些幼蛇看着迷你可爱,实...
AI开源公开信签署企业增至50... IT之家 7 月 26 日消息,英伟达、微软、IBM、Meta 等 25 家美国科技企业本周(7 月...
南阳快手短视频代运营企业的服务... 在短视频平台快速发展的背景下,企业通过快手等渠道进行内容运营已成为常见的市场动作。对于希望借助短视频...
普通人该如何跟上科技发展的步伐 这个被称作科技的词汇, 听起来既有宏大之感, 又颇为遥远, 好似仅仅归属于在实验室里专心致志钻研的科...