1. 程式人生 > >Kubernetes叢集部署tomcat容器/Java web應用流程

Kubernetes叢集部署tomcat容器/Java web應用流程

  • kube-tomcat.yaml實現如下。

這裡是把Deployment和Services在一個檔案中實現了。也可以分為兩個檔案來實現。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

# Copyright 2015 Google Inc. All Rights Reserved.

#

# Licensed under the Apache License, Version 2.0 (the "License");

# you may not use this file except in compliance with the License.

# You may obtain a copy of the License at

#

#     http://www.apache.org/licenses/LICENSE-2.0

#

# Unless required by applicable law or agreed to in writing, software

# distributed under the License is distributed on an "AS IS" BASIS,

# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

# See the License for the specific language governing permissions and

# limitations under the License.

# Configuration to deploy release version of the Dashboard UI.

#

# Example usage: kubectl create -f <this_file>

kind: Deployment

apiVersion: extensions/v1beta1

metadata:

labels:

app: kube-tomcat

version: v1.1.1

name: kube-tomcat

namespace: default

spec:

replicas: 1

selector:

matchLabels:

app: kube-tomcat

template:

metadata:

labels:

app: kube-tomcat

spec:

containers:

- name: kube-tomcat

image: docker.io/tomcat

imagePullPolicy: Always

ports:

- containerPort: 8080

protocol: TCP

args:

# Uncomment the following line to manually specify Kubernetes API server Host

# If not specified, Dashboard will attempt to auto discover the API server and connect

# to it. Uncomment only if the default does not work.

- --apiserver-host=http://47.97.90.38:8080  ## 請修改為自己的kube-apiserver

livenessProbe:

httpGet:

path: /

port: 8080

initialDelaySeconds: 30

timeoutSeconds: 30

---

kind: Service

apiVersion: v1

metadata:

labels:

app: kube-tomcat

name: kube-tomcat

namespace: default

spec:

type: NodePort

ports:

- port: 80

targetPort: 8080

selector:

app: kube-tomcat

完整的檔案如下:

  • 在master上,然後使用如下命令建立deployment和Service

1

kubectl create -f kube-tomcat.yaml

檢視建立的deployment:、

1

kubectl get deployment

檢視這個deployment的詳情:

1

kubectl describe deployment kube-tomcat

檢視建立的service:

1

kubectl get service

檢視這個service的詳情。

1

kubectl describe service kube-tomcat

  • service詳情這裡的IP就是CLUSTER-IP. CLUSTER-IP是和service繫結的。
  • service詳情這裡的Port就是Service的埠號。
  • service詳情這裡的NodePort就是Node的真實埠號。
  • service詳情這裡的Endpoints就是容器的IP和port。

檢視建立的pod:

1

kubectl get pod

檢視其中一個pod的詳情。

pod詳情這裡的IP是nodes中的虛擬IP。該虛擬IP可以去nodes裡面使用ifconfig檢視。

1

kubectl describe pod kube-tomcat-1115055280-tk1f8

在nodes上檢視建立的容器:

這裡一定要指定namespaces和services。

  • 然後到nodes中,把war使用“docker cp”複製到容器的tomcat/webapps,就可以實現頁面的訪問了【這裡可能需要等待較多時間,至少幾分鐘】
  • 在Postman中進行測試

注意在請求中的IP應該是master所在的IP。返回成功。可以使用Postman來進行介面測試,測試通過表示部署成功。

  • 以上步驟的部署也可以結合持續整合CI/CD來進行,能簡化不少流程。