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來生成模板的,而後在此模版基礎上進行修改。

相關文章
相關標籤/搜索