再見命令行!K8S傻瓜式安裝,圖形化管理真香!


再見命令行!K8S傻瓜式安裝,圖形化管理真香!

#K8S系列 4

之前我們一直都是使用命令行來管理K8S的,這種做法雖然對程序員來說看起來很炫酷,但有時候用起來還是挺麻煩的。今天我們來介紹一個K8S可視化管理工具Rancher,使用它可以大大減少我們管理K8S的工作量,希望對大家有所幫助!

Rancher簡介

Rancher是為使用容器的公司打造的容器管理平台。Rancher簡化了使用K8S的流程,開發者可以隨處運行K8S,滿足IT需求規范,賦能DevOps團隊。

圖片

Docker安裝

雖然Rancher的安裝方法有好幾種,但是使用Docker來安裝無疑是最簡單!沒有安裝Docker的朋友可以先安裝下。

  • 安裝yum-utils
yum install -y yum-utils device-mapper-persistent-data lvm2
  • 為yum源添加docker倉庫位置:
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  • 安裝Docker:
yum install docker-ce
  • 啟動Docker:
systemctl start docker

Rancher安裝

安裝完Docker之后,我們就可以開始安裝Rancher了。Rancher已經內置K8S,無需再額外安裝。就像我們安裝好Minikube一樣,K8S直接就內置了。

  • 首先下載Rancher鏡像;
docker pull rancher/rancher:v2.5-head
  • 下載完成后運行Rancher容器,Rancher運行起來有點慢需要等待幾分鍾:
docker run -p 80:80 -p 443:443 --name rancher \
--privileged \
--restart=unless-stopped \
-d rancher/rancher:v2.5-head
  • 運行完成后就可以訪問Rancher的主頁了,第一次需要設置管理員賬號密碼,訪問地址:https://192.168.5.46

圖片

  • 設置下Rancher的Server URL,一個其他Node都可以訪問到的地址,如果我們要安裝其他Node的話需要用到它;

圖片

Rancher使用

我們首先來簡單使用下Rancher。

  • 在首頁我們可以直接查看所有集群,當前我們只有安裝了Rancher的集群;

圖片

  • 點擊集群名稱可以查看集群狀態信息,也可以點擊右上角的按鈕來執行kubectl命令;

圖片

  • 點擊儀表盤按鈕,我們可以查看集群的Dashboard,這里可以查看的內容就豐富多了,Deployment、Service、Pod信息都可以查看到了。

圖片

Rancher實戰

之前我們都是使用命令行的形式操作K8S,這次我們使用圖形化界面試試。還是以部署SpringBoot應用為例,不過先得部署個MySQL。

部署MySQL

  • 首先我們以yaml的形式創建Deployment,操作路徑為Deployments->創建->以YAML文件編輯

圖片

  • Deployment的yaml內容如下,注意添加namespace: default這行,否則會無法創建;
apiVersion: apps/v1
kind: Deployment
metadata:
  # 指定Deployment的名稱
  name: mysql-deployment
  # 指定Deployment的空間
  namespace: default
  # 指定Deployment的標簽 
  labels:
    app: mysql
spec:
  # 指定創建的Pod副本數量 
  replicas: 1
  # 定義如何查找要管理的Pod
  selector:
    # 管理標簽app為mysql的Pod
    matchLabels:
      app: mysql
  # 指定創建Pod的模板
  template:
    metadata:
      # 給Pod打上app:mysql標簽
      labels:
        app: mysql
    # Pod的模板規約
    spec:
      containers:
        - name: mysql
          # 指定容器鏡像
          image: mysql:5.7
          # 指定開放的端口
          ports:
            - containerPort: 3306
          # 設置環境變量
          env:
            - name: MYSQL_ROOT_PASSWORD
              value: root
          # 使用存儲卷
          volumeMounts:
            # 將存儲卷掛載到容器內部路徑
            - mountPath: /var/log/mysql
              name: log-volume
            - mountPath: /var/lib/mysql
              name: data-volume
            - mountPath: /etc/mysql
              name: conf-volume
      # 定義存儲卷
      volumes:
        - name: log-volume
          # hostPath類型存儲卷在宿主機上的路徑
          hostPath:
            path: /home/docker/mydata/mysql/log
            # 當目錄不存在時創建
            type: DirectoryOrCreate
        - name: data-volume
          hostPath:
            path: /home/docker/mydata/mysql/data
            type: DirectoryOrCreate
        - name: conf-volume
          hostPath:
            path: /home/docker/mydata/mysql/conf
            type: DirectoryOrCreate
  • 其實我們也可以通過頁面來配置Deployment的屬性,如果你對yaml中的配置不太熟悉,可以在頁面中修改屬性並對照下,比如hostPath.type這個屬性,一看就知道有哪些了;

圖片

  • 之后以yaml的形式創建Service,操作路徑為Services->創建->節點端口->以YAML文件編輯

圖片

  • Service的yaml內容如下,namespace屬性不能少;
apiVersion: v1
kind: Service
metadata:
  # 定義空間
  namespace: default
  # 定義服務名稱,其他Pod可以通過服務名稱作為域名進行訪問
  name: mysql-service
spec:
  # 指定服務類型,通過Node上的靜態端口暴露服務
  type: NodePort
  # 管理標簽app為mysql的Pod
  selector:
    app: mysql
  ports:
    - name: http
      protocol: TCP
      port: 3306
      targetPort: 3306
      # Node上的靜態端口
      nodePort: 30306

圖片

  • 接下來要獲得Rancher容器運行的IP地址(在Minikube中我們使用的使用Minikube的地址);
[root@linux-local ~]# docker inspect rancher |grep IPAddress
            "SecondaryIPAddresses": null,
            "IPAddress": "172.17.0.3",
                    "IPAddress": "172.17.0.3",
  • 之后我們就可以像在Linux服務器上訪問數據庫一樣訪問Rancher中的數據庫了,直接添加Rancher的IP和數據庫端口即可。

圖片

部署SpringBoot應用

  • yaml的形式創建SpringBoot應用的Deployment,操作路徑為Deployments->創建->以YAML文件編輯,配置信息如下;
apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: default
  name: mall-tiny-fabric-deployment
  labels:
    app: mall-tiny-fabric
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mall-tiny-fabric
  template:
    metadata:
      labels:
        app: mall-tiny-fabric
    spec:
      containers:
        - name: mall-tiny-fabric
          # 指定Docker Hub中的鏡像地址
          image: macrodocker/mall-tiny-fabric:0.0.1-SNAPSHOT
          ports:
            - containerPort: 8080
          env:
            # 指定數據庫連接地址
            - name: spring.datasource.url
              value: jdbc:mysql://mysql-service:3306/mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
            # 指定日志文件路徑
            - name: logging.path
              value: /var/logs
          volumeMounts:
            - mountPath: /var/logs
              name: log-volume
      volumes:
        - name: log-volume
          hostPath:
            path: /home/docker/mydata/app/mall-tiny-fabric/logs
            type: DirectoryOrCreate
  • yaml的形式創建Service,操作路徑為Services->創建->節點端口->以YAML文件編輯,配置信息如下;
apiVersion: v1
kind: Service
metadata:
  namespace: default
  name: mall-tiny-fabric-service
spec:
  type: NodePort
  selector:
    app: mall-tiny-fabric
  ports:
    - name: http
      protocol: TCP
      port: 8080
      targetPort: 8080
      # Node上的靜態端口
      nodePort: 30180
  • 創建成功后,在Deployments標簽中,我們可以發現實例已經就緒了。

圖片

外部訪問應用

依然使用Nginx反向代理的方式來訪問SpringBoot應用。

  • 由於Rancher服務已經占用了80端口,Nginx服務只能重新換個端口了,這里運行在2080端口上;
docker run -p 2080:2080 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx  \
-v /mydata/nginx/conf:/etc/nginx \
-d nginx:1.10
  • 創建完Nginx容器后,添加配置文件mall-tiny-rancher.conf,將mall-tiny.macrozheng.com域名的訪問反向代理到K8S中的SpringBoot應用中去;
server {
    listen       2080;
    server_name  mall-tiny.macrozheng.com; #修改域名

    location / {
        proxy_set_header Host $host:$server_port;
        proxy_pass   http://172.17.0.3:30180; #修改為代理服務地址
        index  index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

}
  • 再修改訪問Linux服務器的本機host文件,添加如下記錄;
192.168.5.46 mall-tiny.macrozheng.com

圖片

總結

使用Rancher可視化管理K8S還真是簡單,大大降低了K8S的部署和管理難度。一個Docker命令即可完成部署,可視化界面可以查看應用運行的各種狀態。K8S腳本輕松執行,不會寫腳本的圖形化界面設置下也能搞定。總結一句:真香!

都看到這了,確定不來個點贊在看鼓勵下么?這將是我創造更多優質文章的最大動力!

參考資料

Rancher官方文檔:https://docs.rancher.cn/rancher2/

項目源碼地址

https://github.com/macrozheng/mall-learning/tree/master/mall-tiny-fabric

推薦閱讀


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM