k8s 系列之 部署eureka集羣

1:環境 

  

k8s-master 192.168.233.141
k8s-node1 192.168.233.142
k8s-node2 192.168.233.143

2:思路

      一 : 採用兩個service 兩個 Deployment  兩個 Ingress   分片數量 replicas  都是1個 會產生兩個pod 這兩個pod 當中的eureka相互註冊

     二 : 因爲通過網址的形式進行註冊 , 所以需要使用到  Headless Service  無頭服務 

3:代碼以及解釋

 一 :新建 資源清單 eureka01.yaml

二 : 資源清單代碼 以及解釋

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: eureka01 # Ingress 的名稱
  namespace: ms # 命名空間 接下來的部署都會使用這個命名空間
spec:
  rules:
    - host: eureka01.ctnrs.com # 通過 Ingress 映射的地址 , 需要通過host去配置,下面講解
      http:
        paths:
        - path: /
          backend:
            serviceName: eureka01 # 這裏對應着service 的 名字
            servicePort: 8040 # 對應着需要映射的service的端口
---
apiVersion: v1
kind: Service
metadata:
  name: eureka01 # Service 的 名稱  對應着 Ingress 中的 serviceName: eureka01
  namespace: ms
spec:
  clusterIP: None # 這就是將這個service 設置爲無頭服務
  ports:
    - name: eureka01 # 指定端口的名稱
      port: 8040
  selector:
    project: ms
    app: eureka01  # 輪詢對應 Deployment 中 ms 命名空間的 selector 指定的app
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: eureka01
  namespace: ms
spec:
  replicas: 1
  selector:
    matchLabels:
      project: ms
      app: eureka01 # RC通過spec.selector來篩選要控制的Pod
  template:
    metadata:
      labels:
        project: ms
        app: eureka01
    spec:
      containers:
        - name: eureka01 # pod的名稱,必須字段,名稱唯一且對象創建後不可以被修改
          image: registry.cn-hangzhou.aliyuncs.com/sdongp-dkz/cloud-eureka:1.0-SNAPSHOT  # 鏡像倉庫的路徑/鏡像的名稱:鏡像的標籤
          ports:
            - name: http # 指定端口的名稱
              containerPort: 8040 # pod暴露的端口,此端口僅是額外的信息,對端口是否被暴露沒有影響

三 : 運行命令  kubectl apply -f eureka01.yaml

四 : 查看  pod   和 svc 的情況  <none> 就是無頭服務

kubectl get pod -o wide -n ms

NAME                        READY   STATUS    RESTARTS   AGE     IP            NODE        NOMINATED NODE   READINESS GATES
eureka01-7d57b556df-pjfww   1/1     Running   0          2m17s   10.100.3.60   k8s-node2   <none>           <none>

kubectl get svc -o wide -n ms
NAME               TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)    AGE     SELECTOR
eureka01           ClusterIP   None           <none>        8040/TCP   2m31s   app=eureka01,project=ms

五 : 這個時候我們已經創建了一個 eureka  

六 : 這個時候還需要配置nginx-ingress 。 不然是沒辦法在外部訪問的  k8s nginx-ingress 的安裝

七 : 配置本地的host 文件 添加 映射 

# 192.168.233.143 是我nginx-ingress所在的那臺 node的IP地址
192.168.233.143 eureka01.ctnrs.com

八 :這個時候就能去訪問了  http://eureka01.ctnrs.com:32486/

四:開始添加另一個eureka服務

一 : 新建 eureka02.yaml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: eureka02 # Ingress 的名稱
  namespace: ms # 命名空間 接下來的部署都會使用這個命名空間
spec:
  rules:
    - host: eureka02.ctnrs.com # 通過 Ingress 映射的地址 , 需要通過host去配置,下面講解
      http:
        paths:
        - path: /
          backend:
            serviceName: eureka02 # 這裏對應着service 的 名字
            servicePort: 8040 # 對應着需要映射的service的端口
---
apiVersion: v1
kind: Service
metadata:
  name: eureka02 # Service 的 名稱  對應着 Ingress 中的 serviceName: eureka02
  namespace: ms
spec:
  clusterIP: None # 這就是將這個service 設置爲無頭服務
  ports:
    - name: eureka02 # 指定端口的名稱
      port: 8040
  selector:
    project: ms
    app: eureka02  # 輪詢對應 Deployment 中 ms 命名空間的 selector 指定的app
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: eureka02
  namespace: ms
spec:
  replicas: 1
  selector:
    matchLabels:
      project: ms
      app: eureka02 # RC通過spec.selector來篩選要控制的Pod
  template:
    metadata:
      labels:
        project: ms
        app: eureka02
    spec:
      containers:
        - name: eureka02 # pod的名稱,必須字段,名稱唯一且對象創建後不可以被修改
          image: registry.cn-hangzhou.aliyuncs.com/sdongp-dkz/cloud-eureka:1.0-SNAPSHOT  # 鏡像倉庫的路徑/鏡像的名稱:鏡像的標籤
          ports:
            - name: http # 指定端口的名稱
              containerPort: 8040 # pod暴露的端口,此端口僅是額外的信息,對端口是否被暴露沒有影響

二 :其他步驟一樣 因爲已經添加了 nginx-ingress 所以不需要在去添加了

這個時候去訪問的時候我們就能訪問到兩個eureka了

 這一個是 pod 是在 60 的ip地址的 

這一個是pod在 61 端口的

 五:springcloud eureka yml文件配置

eureka:
  client:
    #false表示不向註冊中心註冊自己。
#    register-with-eureka: false
    #false表示自己端就是註冊中心,我的職責就是維護服務實例,並不需要去檢索服務
    fetch-registry: false
    service-url:
      #設置與Eureka Server交互的地址查詢服務和註冊服務都需要依賴這個地址。
      defaultZone: http://eureka01.ms.svc.cluster.local:${server.port}/eureka/,http://eureka02.ms.svc.cluster.local:${server.port}/eureka/

這裏是一個很關鍵的點   這裏有 這樣的 兩個網址  http://eureka01.ms.svc.cluster.local:${server.port}/eureka/

這裏就是應爲使用了 k8s的無頭服務 。所以沒有ip  而無頭服務默認的 網址組成規則是 

 http://{serviceName}.{namespaceName}.svc.cluster.local

解釋 

{serviceName}   就是我們在新增 eureka01 的時候 service 當中的 name 對應的 eureka01

{namespaceName}  命名空間的名稱  ms

svc.cluster.local 是k8s 默認的集羣名稱 

在這裏就完成了一個eureka的集羣部署了

springcloud 地址

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章