天天看點

dashboard可視化界面部署springboot項目

dashboard可視化界面部署springboot項目

1.本文概念解析

ConfigMap:yaml中引用的配置檔案。(如同springboot中能夠全局常量)

Service:暴露容器的網絡使得外部端口得以通路内部容器的資訊。

Deployment:監控和管理pod。(如同tomcat,管理多個項目)

Pod:可以擁有多容器,最小排程機關。(docker容器)

namespace:用于實作多租戶的資源隔離。(不同的Deployment存放于不同位置,友善操作)

2.安裝私服

請參考上文harbor安裝與使用

3.上傳鏡像到私服

4.建立namespace

dashboard可視化界面部署springboot項目
apiVersion: v1
kind: Namespace
metadata:
   name: eureka  #空間名稱
   labels:
     name: eureka
複制代碼      
在3處執行以下代碼,注意空間名稱自行修改。

5.開放端口号

k8s預設的端口号範圍為30000-32767,如果需要使用其他端口,需要重新配置,請執行以下指令。

vi /etc/kubernetes/manifests/kube-apiserver.yaml
複制代碼      

添加需要使用的端口号範圍。

--service-node-port-range=2-65535
複制代碼      
dashboard可視化界面部署springboot項目

 如果修改配置檔案,需要重新啟動!

systemctl daemon-reload
systemctl restart kubelet
複制代碼      

6.在工作空間中建立springboot項目

此操作也可以稱為在namespace中添加pod。
dashboard可視化界面部署springboot項目

 向3處複制以下配置。

apiVersion: v1      #于k8s叢集版本有關,使用kubectl api-servrsions 即可檢視目前叢集支援的版本
kind: Service
metadata:
  name: eureka
  namespace: eureka
  labels:
    app: eureka
spec:               #這是關于該 Service 的定義,描述了 Service 如何選擇 Pod,如何被通路
  type: NodePort
  ports:
  - port: 5001
    nodePort: 31666
  selector:
    app: eureka
---
apiVersion: apps/v1
kind: Deployment     #對象類型  #該配置的類型,我們使用的是deployment
metadata:            #譯名為中繼資料,即deployment的一些基本屬性和資訊
  name: eureka       #deployment的名稱
  labels:            #标簽,可以靈活定位一個或多個資源,其中key和value均可自定義,可以定義多組
    app: eureka      #為該deployment設定key為app value為nginx的标簽 
spec:                #這是關于該deployment的描述,可以了解為你期待該deployment再k8s中如何使用
  replicas: 1        #運作容器的副本數,修改這裡可以快速修改分布式節點數量
  selector:          #标簽選擇器,與上面的标簽共同作用
    matchLabels:     #選擇包含标簽app:nginx的資源
      app: eureka
  template:          #這是選擇或建立pod的模闆
    metadata:        #pod的中繼資料
      labels:        #pod的标簽,上面的selector即選擇包含标簽app:nginx的pod
        app: eureka
    spec:            #期待pod實作的功能(即在pod中部署)
      containers:    #生成container,與docker中的container是同一種
      - name: eureka #container的名稱
        image: 192.168.41.44:9000/eureka/eureka:latest #私服鏡像
        imagePullPolicy: IfNotPresent #pull鏡像時機
        ports:
        - containerPort: 5001         #容器對外開放端口
      nodeName: eureka                #執行釋出的node
複制代碼      
請根據個人配置,按照上文備注自行修改。

7.重新釋出pod

直接删除pod即可,k8s會直接按照已經添加的配置拉取新的鏡像重新釋出項目。

dashboard可視化界面部署springboot項目

8.删除pod

1.主控端操作

如果想删除pod,請使用主控端指令行執行以下指令,删除deployment。

kubectl get deployment -n eureka
kubectl delete deployment eureka -n eureka
複制代碼      

2.dashboard面闆操作

也可以使用dashboard直接操作,分别删除deployment和pod,詳情見下圖。

dashboard可視化界面部署springboot項目
dashboard可視化界面部署springboot項目
請保證上述删除順序。

9.異常解析

1.failed to set bridge addr: "cni0" already has an IP address different from

如果出現此報錯,可能是nodes多次加入master照成網絡沖突,在nodes執行下面指令,重新加入。

kubeadm reset
systemctl stop kubelet
systemctl stop docker
rm -rf /var/lib/cni/
rm -rf /var/lib/kubelet/*
rm -rf /etc/cni/
ifconfig cni0 down
ifconfig flannel.1 down
ifconfig docker0 down
ip link delete cni0
ip link delete flannel.1
systemctl start docker
systemctl start kubelet
kubeadm join xxxxxxxxxxxxxxxxxx
複制代碼      

2.found a tab character that violates indentation/found character that cannot staart any token

如果出現以下報錯,請檢查以上yaml是否格式錯誤 如:tab代替空格 需要空格等