昨天把環境架好,那我們來試看看吧。今天先來分析講解怎麼建一個k8s的資源,就從Pod開始吧
為k8s最小的部屬單位,想對container操作的話,最基本也是要先創建一個Pod。
首先撰寫一個pod.yml檔,內容基本大致如下
apiVersion: v1
kind: Pod
metadata:
name: hello-pod
spec:
containers:
- name: hello-container
image: w5151381guy/helloworld
ports:
- containerPort: 8080
kubectl api-versions
去查,輸出如下admissionregistration.k8s.io/v1
apiextensions.k8s.io/v1
apiregistration.k8s.io/v1
apps/v1
authentication.k8s.io/v1
authorization.k8s.io/v1
autoscaling/v1
autoscaling/v2
batch/v1
certificates.k8s.io/v1
coordination.k8s.io/v1
discovery.k8s.io/v1
events.k8s.io/v1
flowcontrol.apiserver.k8s.io/v1beta2
flowcontrol.apiserver.k8s.io/v1beta3
networking.k8s.io/v1
node.k8s.io/v1
policy/v1
rbac.authorization.k8s.io/v1
scheduling.k8s.io/v1
storage.k8s.io/v1
v1
接者部屬看看
kubectl apply -f pod.yml
會看到類似訊息
pod/nginx-pod created
代表創建成功,接者我們看一下pod的狀態
kubectl get po
running就代表沒問題啦。
那我要怎麼連到呢,雖然在建立pod時會有這個pod的ip位置,不過這只適用於k8s集群(主節點、工作節點)內的溝通,因此這時候就需要一個Service來處理對外的連接了。
簡單來說Service會負責作為K8s集群內部Pod能和集群外溝通的橋樑,或者應該說溝通的部分其實都會用到Service。
先來看看service.yml
apiVersion: v1
kind: Service
metadata:
name: hello-service
spec:
selector:
app: hello-pod
type: NodePort
ports:
- name: http
protocol: TCP
port: 80
targetPort: 8080
nodePort: 30391
這裡可以看到不一樣的幾個標籤
NodePort模式其概念是在Node上開一個指定的Port,接者透過Service將port mapping到Pod的Port上,藉此可以將Pod 開放給外部使用。
以上我就可以使用我的Nodeip加上nodePort連接到hello-pod這個服務了喔~
今天就先講到這邊,明天將延續概念結合之前的demo演示。