將博客部署到k3s中


之前已經把博客部署到docker中了,這次是要通過k8s部署。

k8s官方文檔使用的kubeadm,配置需求比較高,我的破虛擬機達不到要求,於是試都沒試,而找到了這個輕量級的k3s

cluster環境搭建

最開始是直接下載的release鏡像包,不過不好管理,后來使用了git倉庫的安裝腳本進行安裝。

注:
k3s安裝好后,應該是k8s本身的一些配置原因,我的80端口被莫名的轉發了,之前docker部署的博客也不能訪問,一直提示404 page not found,原因不明。

博客配置

比起docker啟動時,指定配置選項,k8s通過yaml配置文件指定這些選項,對我來說,主要是文件系統的掛載。

k8s整個生態還是比較復雜的,我這里使用了比較簡單的形式。

Deployment

  • 應用增加app=myblog的label,供后面service 引用
  • 把數據文件、數據庫和日志目錄,通過hostPath掛載出來
    • 這里沒有用localhost,因為hostPath不需要預先創建,比較簡單
  • replicas 僅有一個
apiVersion: apps/v1
kind: Deployment
metadata:
  name: myblog-deployment
  labels:
    app: myblog
spec:
  replicas: 1
  selector:
    matchLabels:
      app: myblog
  template:
    metadata:
      labels:
        app: myblog
    spec:
      containers:
      - name: myblog
        image: mosakashaka/blog:latest
        volumeMounts:
        - name: blog-data
          mountPath: /app/wwwroot/data
        - name: blog-db
          mountPath: /data
        - name: blog-log
          mountPath: /app/Logs
      volumes:
        - name: blog-data
          hostPath:
            # directory location on host
            path: /root/sync/BlogDatabase/blogdata
            # this field is optional
            type: Directory
        - name: blog-db
          hostPath:
            # directory location on host
            path: /root/sync/BlogDatabase/blogdb
            # this field is optional
            type: Directory
        - name: blog-log
          hostPath:
            # directory location on host
            path: /root/kube/bloglog
            # this field is optional
            type: Directory

Service

這里選擇通過Ingress來使能外界訪問,所以需要一個Service,map 80端口即可。

apiVersion: v1
kind: Service
metadata:
  name: myblog-service
spec:
  selector:
    app: myblog
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80

Ingress

通過NodePort或者LoadBalancer也可以達到這個目的,不過Ingress在有Ingress Controller的情況下,似乎是我所了解的最簡單的方式。

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: myblog-ingress
spec:
  backend:
    serviceName: myblog-service
    servicePort: 80

啟動運行

將以上三個文件存儲為yaml格式放在一個目錄中,如blog,在父目錄中執行

kubectl apply -f myblog

即可啟動。

遺留問題

  1. 80端口被k3s的哪個服務所占用/攔截?
  2. 其他方式的網絡配置


免責聲明!

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



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