rancher初級搭建

rancher簡介

Rancher是一個開源的全棧化企業級容器管理平臺,經過極簡的操做體驗和強大完善的功能,讓企業用戶在生產環境中輕鬆落地容器技術。html

rancher搭建

主機搭建

首先安裝 docker, 而且啓動docker。node

yum -y install docker
service docker start
複製代碼

安裝rancher。(注意檢查端口是否被佔用)nginx

sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher
複製代碼

啓動後打開 https://SERVER_IP SERVER_IP 爲你的ip地址,能夠看到:docker

登錄

輸入密碼而且確認好你的ip地址就能夠進入控制檯了。json

控制檯

至此,rancher安裝成功。api

集羣搭建

在控制檯中咱們新建一個集羣。bash

新建集羣

這裏選擇k8s的集羣而且填寫咱們須要的名稱,點擊下一步。服務器

建立集羣

這裏須要把etcd和control都鉤上,公網地址須要填寫另外的一臺服務器ip來充當這三種角色,內網名稱也同樣,節點名稱就填你須要的。app

最後按照提示把下面的命令複製到你剛剛填寫的公網地址的服務器來執行。負載均衡

點擊完成再回到控制檯,等待比較長的一段時間後能夠看到集羣已經被建立起來了。

建立成功

能夠看到具體節點的cpu和內存的使用。

內存的使用

點擊菜單上的主機,就能夠看到主機的基本狀況了。

主機狀況

點擊編輯集羣,再爲此添加一個節點(搶佔式服務器)

這一個節點只須要充當worker角色,主機地址和內網地址一樣填寫,下面的步驟和第一次添加節點一致。

添加完畢後能夠在控制檯看到兩個節點已經被添加到集羣上了。

兩個節點

docker私有倉庫

爲了後面鏡像的更新方便,必須弄一套本身的私有docker倉庫,rancher就有現成的配置和插件。

點擊集羣上的system,而後點擊應用商店。

應用商店

開啓應用商店而且找到docker-reistry安裝。

docker-reistry

商店還有不少能夠用的插件(自行了解)。

安裝完畢後能夠點擊詳情看到咱們的倉庫被創建在某個節點上。

docker-reistry節

至此咱們只須要往這地址推送咱們的鏡像便可。(若是沒有負載域名的記得開啓docker的daemon.json裏的insecure-registrie配置)。

k8s中的組件配置

講述一下pod,deployment,service,pvc和storageClass的yml的簡單編寫,詳情

pod的yml

apiVersion: v1       #必選,版本號,例如v1
kind: Pod       #必選,Pod
metadata:       #必選,元數據
  name: helloworld       #必選,Pod名稱
  namespace: string    #必選,Pod所屬的命名空間
  labels:      #自定義標籤
    - name: helloworld     #自定義標籤名字
spec:         #必選,Pod中容器的詳細定義
  containers:      #必選,Pod中容器列表
  - name: helloworld     #必選,容器名稱
    image: 10.101.171.110:5000/test/nginx:v1    #必選,容器的鏡像名稱
    imagePullPolicy: IfNotPresent #獲取鏡像的策略 Alawys表示下載鏡像 IfnotPresent表示優先使用本地鏡像,不然下載鏡像,Nerver表示僅使用本地鏡像
    ports:       #須要暴露的端口庫號列表
    - name: string     #端口號名稱
      containerPort: 80   #容器須要監聽的端口號
    env:       #容器運行前需設置的環境變量列表
    - name: string     #環境變量名稱
      value: string    #環境變量的值
    resources:       #資源限制和請求的設置
      limits:      #資源限制的設置
        cpu: 25m    #Cpu的限制,單位爲core數,將用於docker run --cpu-shares參數
        memory: 128Mi     #內存限制,單位能夠爲Mib/Gib,將用於docker run --memory參數
      requests:      #資源請求的設置
        cpu: 5m    #Cpu請求,容器啓動的初始可用數量
        memory: 64Mi     #內存清楚,容器啓動的初始可用數量
複製代碼

比較重要的是metadata下的名稱和標籤,由於後面說到的service就是經過標籤來識別的,其餘的參數比較簡單就很少闡述了。

deployment的yml

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: helloworld
spec:
  replicas: 2 #容器數量
  template:
    metadata:
      labels:
        app: helloworld #標籤
    spec:
      # volumes:
      # - name: content-storage
      # persistentVolumeClaim:
      # claimName: nfs-pvc
      containers:
        - name: helloword-pod
          image: 47.103.120.54:31418/test/nginx
          imagePullPolicy: Always #老是拉取鏡像
          ports:
            - containerPort: 80
          # volumeMounts:
          # - mountPath: "/usr/share/nginx/html"
          # name: content-storage
          resources:       #資源限制和請求的設置
            limits:      #資源限制的設置
              cpu: 25m    #Cpu的限制,單位爲core數,將用於docker run --cpu-shares參數
              memory: 128Mi     #內存限制,單位能夠爲Mib/Gib,將用於docker run --memory參數
            requests:      #資源請求的設置
              cpu: 5m    #Cpu請求,容器啓動的初始可用數量
              memory: 64Mi     #內存清楚,容器啓動的初始可用數量
複製代碼

日常只須要添加deployment就能夠了,由於負載都是已部署爲單位的,參數裏面有一個volumeMounts是指pvc的名稱和持久卷要掛載的路徑。

sercice的yml

apiVersion: v1
kind: Service
metadata:
  name: helloworld-service
  labels:
    name: helloworld-service
spec:
  type: NodePort      #這裏表明是NodePort類型的
  ports:
  - port: 80          #這裏的端口和clusterIP(10.97.114.36)對應,即10.97.114.36:80,供內部訪問。
    targetPort: 80  #端口必定要和container暴露出來的端口對應,nginx暴露出來的端口是80,因此這裏也應是80
    protocol: TCP
    nodePort: 32143   # 全部的節點都會開放此端口,此端口供外部調用。
  selector:
    app: helloworld          #這裏選擇器必定要選擇容器的標籤
複製代碼

service是提供外部訪問的,全部必須提供外部端口,在後面增長了負載之後會自動建立sercice。

storageClass的yml

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: nfs-storageclass
provisioner: nfs-provisioner
複製代碼

StorageClass 爲管理員提供了描述存儲 "class(類)" 的方法。 不一樣的 class 可能會映射到不一樣的服務質量等級或備份策略,或由羣集管理員肯定的任意策略。 Kubernetes 自己不清楚各類 class 表明的什麼。這個概念在其餘存儲系統中有時被稱爲「配置文件」。簡單來講就是爲了建立pv而使用的一個類。

pvc的yml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: nfs-pvc
spec:
  accessModes:
  - ReadWriteMany
  storageClassName: nfs-storageclass
  resources:
    requests:
      storage: 1Mi
複製代碼

PersistentVolumeClaim(PVC)是用戶存儲的請求。它與 Pod 類似。Pod 消耗節點資源,PVC 消耗 PV 資源。Pod 能夠請求特定級別的資源(CPU 和內存)。聲明能夠請求特定的大小和訪問模式(例如,能夠以讀/寫一次或 只讀屢次模式掛載)。必須注意的是accessModes 和 storageClassName,一個是模式一個是剛剛註冊的storageClass。

主體搭建

添加deployment

在rancher控制檯中,點擊部署而且倒入yml進行添加deployment

添加deployment

導入寫好的yml能夠看到部署成功後deployment

部署成功

能夠看到下面有不少調度規則和縮放策略等,能夠自行配置。

添加storageClass和pvc

在集羣下能夠添加存儲類和持久卷。

storageClass

以建立nfs存儲類爲例子,首先能夠先看上一篇文章爲你的服務器搭建nfs服務。

重寫storeageClass.yml

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: grafana-nfs
  namespace: default
provisioner: fuseim.pri/ifs
reclaimPolicy: Retain
複製代碼

重寫pvc.yml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: test-claim
  namespace: default
 # annotations:
 # volume.beta.kubernetes.io/storage-class: "grafana-nfs"
spec:
  storageClassName: grafana-nfs
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 1Mi
複製代碼

重寫deployment.yml

---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: helloworld
spec:
  replicas: 2 #容器數量
  template:
    metadata:
      labels:
        app: helloworld #標籤
    spec:
      volumes:
        - name: nfs-client-root
          persistentVolumeClaim:
            claimName: test-claim
          # nfs:
          # server: 47.102.40.125
          # path: /home/pvc
      containers:
        - name: helloword-pod
          image: 47.102.40.125:30009/test/nginx
          imagePullPolicy: Always #老是拉取鏡像
          ports:
            - containerPort: 80
          volumeMounts:
            - name: nfs-client-root
              mountPath:  /persistentvolumes
          env:
            - name: PROVISIONER_NAME
              value: fuseim.pri/ifs
            - name: NFS_SERVER
              value: 47.102.40.125 # nfs服務的監聽地址
            - name: NFS_PATH
              value: /home/pvc
          resources:       #資源限制和請求的設置
            limits:      #資源限制的設置
              cpu: 25m    #Cpu的限制,單位爲core數,將用於docker run --cpu-shares參數
              memory: 128Mi     #內存限制,單位能夠爲Mib/Gib,將用於docker run --memory參數
            requests:      #資源請求的設置
              cpu: 5m    #Cpu請求,容器啓動的初始可用數量
              memory: 64Mi     #內存清楚,容器啓動的初始可用數量
複製代碼

注意 47.102.40.125 爲你的nfs服務地址,mountPath爲你pod掛載的目錄。

從新倒入這三個文件,在控制檯中再建立適應的pv

建立pv

綁定成功後,查看pod裏面的文件夾,能夠看到掛載成功。

pvc成功

添加ingress

經過控制檯添加負載均衡入口

負載均衡入口

建立成功

建立成功

訪問既可展現pod中的項目。

添加流水線

根據頁面提示添加完代碼庫後,能夠看到:

代碼庫

啓動須要構建的代碼庫,編輯配置,構建須要的流程。

構建流程

第一步是默認的拉取代碼。第二步就是拉取所需的鏡像和推送鏡像的倉庫地址。第三步就是部署須要的pod。

結語

在最後一步我並無實現,由於我是單機測試,而這裏的倉庫是須要https訪問的~若是有好的解決方法歡迎下面留言。

相關文章
相關標籤/搜索