在看網路上的教學文章時,有時會看到一些看起來很酷的Shell Script寫法,其中常常包含一些$當作prefix的特殊變數,這篇就記錄一下Shell Script中的特殊變數以及其代表意義。
| 變數 | 含意 |
|---|---|
| $0 | 當前腳本的文件名 |
| $n | 傳遞給腳本或函數的參數。 n 是一個數字,表示第幾個參數。例如,第一個參數是$1,第二個參數是$2。 |
| $# | 傳遞給腳本或函數的參數個數。 |
| $@ | 傳遞給腳本或函數的所有參數。 |
| $? | 上個命令的退出狀態,或函數的返回值。 |
| $$ | 當前Shell進程ID。 |
在看網路上的教學文章時,有時會看到一些看起來很酷的Shell Script寫法,其中常常包含一些$當作prefix的特殊變數,這篇就記錄一下Shell Script中的特殊變數以及其代表意義。
| 變數 | 含意 |
|---|---|
| $0 | 當前腳本的文件名 |
| $n | 傳遞給腳本或函數的參數。 n 是一個數字,表示第幾個參數。例如,第一個參數是$1,第二個參數是$2。 |
| $# | 傳遞給腳本或函數的參數個數。 |
| $@ | 傳遞給腳本或函數的所有參數。 |
| $? | 上個命令的退出狀態,或函數的返回值。 |
| $$ | 當前Shell進程ID。 |
kubernetes本身架構屬於主從模式(Master/Slave),本篇是第一篇筆記,所以在此先分享並順便紀錄一下,kubernetes裡主從節點如何分工。
此節點類型為kubernetes集群的大腦,負責容器的調度以及資源的管理,節點內包含以下元件
每個 Node 之間的溝通一定要透過此元件,彼此之間無法直接互相溝通
此元件的操作也都需要仰賴kube-apiserver,必須通過kube-apiserver完成
此節點類型為kubernetes集群的四肢,負責執行容器負載,節點內包含以下元件
在此架構上kubernetes集群會有至少一個Master Node(Control Plane)負責容器的調度以及資源的管理,以及至少一個Worker Node負責執行容器負載。
在上述的介紹中,有提到Master Node裡的kube-apiserver元件對整個kubernetes集群至關重要。若集群內只有一個Master Node,那在此Master Node故障時,將失去對整個kubernetes集群的控制,所以希望在集群中有多個Master Node做備援,避免Master Node成為SPOF。
但若集群裡有多個Master Node時,就會需要設定Load Balancer做為單一入口來將控制流量分配到各個Master Node上,並且為了避免Load Balancer本身成為SPOF,此Load Balancer本身也必須處於高可用的狀態。
此篇筆記主要是關於HAProxy與KeepAlived這兩個套件的設定,這兩個套件可以互相搭配來搭建出一套高可用的Load Balancer,並且此套方案已經行之有年,已經可被視為非常成熟可靠的方案。
這個系列會記錄我學習到的Kubernetes知識,主要是一系列的學習筆記,從架設到實際部屬簡單的容器APP,並嘗試管理以及操作Kubernetes集群。
2021年的8月其實我有買了一本Gigi Sayfan寫的Kubernetes 微服務實戰,但只看了前面兩三章,還沒有完全看完(汗)。這個系列並沒有包含這本書的學習筆記,之後再開另一個系列筆記來紀錄。
WireGuard的優點、與其他VPN方案的比較以及如何設定WireGuard這篇並不會詳細介紹,之後會再另外寫一篇來跟大家分享。
這篇文章主要會分享我最近因為在VMWare ESXi上架設了kubernetes的練習環境,開了8台虛擬機來做高可用性備援的設定練習,為了方便操作NAT後面的這些機器所以想要架設VPN。
在ESXi內的路由我原本是使用RouterOS 6.49.2版本的虛擬機來實現,最近因為喜歡看Zac Guo講解網路的影片,注意到WireGuard這個優秀的VPN方案。然而只有RouterOS 7版以上才直接內建支援WireGuard,所以愛嘗鮮的我當然就直接拋棄使用以往的L2TP/IPSec或OpenVPN,直接將RouterOS升級至7.1.1版本奔向WireGuard的懷抱中。但在設定完的時候碰到了一個小問題,以下就來記錄一下,我到底犯了甚麼蠢。