Skip to content

Instantly share code, notes, and snippets.

View Ci-Jie's full-sized avatar
💭
Working

James Li Ci-Jie

💭
Working
View GitHub Profile

前一陣子利用 NFS 來將使用者上傳上來的檔案儲存在伺服器端的檔案目錄中,但是當使用者想要檢視當前已經上傳上來的檔案並且查看檔案建立的時間時,卻發現無法取得檔案建立時間。雖然可以在設計上稍做調整,例如當檔案上傳上來時,將當前時間紀錄並儲存起來,待後續檢視使用。不過這樣的方法雖然可行,但是缺點就是需要額外成本來維護所儲存的檔案建立時間。因此本篇筆者就希望利用 Linux 檔案系統所儲存的建立時間來提供檢視檔案使用。

問題

在 Golang 裡面使用 os.Stat(<file-path>).Sys().(*syscall.Stat_t) 方法可以發現結果如下:

&amp;{Dev:64768 Ino:2883742 Nlink:1 Mode:33188 Uid:0 Gid:0 X__pad0:0 Rdev:0 Size:1022 Blksize:4096 Blocks:8 Atim:{Sec:1614580284 Nsec:716859675} Mtim:{Sec:1614580275 Nsec:628859301} Ctim:{Sec:1614580275 Nsec:628859301} X__unused:[0 0 0]}

筆者最近在部署 Kubernetes 過程中,好奇每個元件究竟安裝與不安裝對 Kubernetes 造成什麼影響?CoreDNS 主要的功能之一是當 Pods 做套件更新或安裝時,可以提供 DNS Forward 功能,將請求轉發至外部進行 Domain 解析,並從正確的位址下載套件進行安裝。

本篇就聚焦在 CoreDNS 將 Pods 的請求轉發至外部 DNS Server 進行解析的運作流程。

問題描述

首先先檢視當前 Kubernetes 上運行的 Pods。

在網路上可以找到大量使用 kubeadm 等類似工具建置 Kubernetes Cluster 的教學,雖然使用這類工具可以快速建立一個 Kubernetes Cluster ,甚至連 HA 也考量進去了。但以手動方式建置好處莫過於可以了解每個元件之間的關係與建置過程可能會遇到的問題以及從中學習排除問題的經驗。因此筆者就開始了這條不歸路....本篇主要紀錄建置一個 HA Kubernetes Cluster 的過程,從 Github 下載 Source Code 開始到建置完成。

整體架構如下圖所示:

k8s-cluster-infrastructure

環境與軟體資訊

apiVersion: apps/v1
kind: Deployment
metadata:
name: api-deploy
namespace: s3-portal
spec:
replicas: 2
selector:
matchLabels:
app: api-pod
apiVersion: v1
kind: Namespace
metadata:
name: ethereum-poa

#S3 Protal APIs

系統環境

OS Host Name IP Address
Ubuntu 14.04 inwin-s3-api 10.26.1.119

建置 Laravel