CKAD Note Section 7 Service and Networking

90. Service


serivce_0

▲ NodePort type 的 service


service_type

service 的種類: NodePort, Cluster IP, LoadBlance


nodeport_0

▲ NodePort 總共有三個 port number 分別是: node-port, port, target-port


  • NodePort range: 30000~32767 (option)。
  • 如果沒有給定 targetPort,預設 port == targetPort

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  type: NodePort
  selector:
    app: MyApp
  ports:
    - port: 80
      nodePort: 30007
      targetPort: 9376

NodePort service 使用 selector 來決定要將流量導向到哪些 pod 身上。
P.S 這邊先偷吃步給一個簡單的方法:
kubectl expose deployment nginx-rollout --port=80 --target-port=80

CKAD Note Section 6 Pod Design

79. Labels, Selectors and Annotations


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
apiVersion: v1
kind: Pod
metadata:
  name: label-demo
  labels:
    environment: production
    app: nginx
spec:
  containers:
  - name: nginx
    image: nginx:1.14.2
    ports:
    - containerPort: 80

我們可以在 kubernetes object 上貼上標籤 (labels) 用於分類。使用 kubectl get pod --selector <key>=<value> 可以篩選。

CKAD Note Section 5 Observability

70. Readiness and Liveness Probes


Readiness Probes

透過前面的章節我們可以得知 Pod 具有狀態 (status) 與 條件 (condition),前者顯示 lifecycle 階段 (pending, containerCreating, running)

  • pending: scheduler 正在安排 pod 到 worker-node 上,或者有問題 (kubectl describe 可以查)
  • containerCreating: pod 已經被放在 worker-node 上,正在建立容器
  • running: 執行中

Condition 的部分就有點類似細項,透過 kubectl describe 可以觀察。

我的第一支 Terraform

terraform_logo

Introduction to Terraform

Terraform 是一款 Infrastructure as Code (IaC) 工具,以 code 來 定義 / 建造 (build) / 修改 (change) / 版本控制 (version) 基礎設施,支援地端 (on-prem) 與 雲端 (Cloud)。

安裝 Terraform CLI

Install Terraform

1
2
3
4
5
6
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
sudo yum -y install terraform

## Auto Completion
terraform -install-autocomplete
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
## show version
terraform --version

Terraform v1.0.7
on linux_amd64

## The auto completion file in bashrc
tail ~/.bashrc

...
complete -C /usr/bin/terraform terraform

Terraform Hello World using Docker provider

Build Infrastructure