kubernetes資源物件
有一個RESTful的api,可用GET,PUT,DELETE,POST,等方式完成操作
相關命令,kubectl run,get,edit
相關資源如下:
workload:Pod,ReplicaSet,Deployment,StatefulSet,DaemonSet,Job,Cronjob
服務發現,均衡:Service,Ingress
配置與儲存: Volume,CSI
ConfigMap,Secret
DownwardAPI
叢集級資源
namespace,Node,Role,ClusterRole,RoleBinding,ClusterRoleBinding
元資料性資源
HPA,PodTemplate,LimitRange
通過如下命令檢視pod的定義語句:
kubectl get pod podname -o yaml
主要欄位:
apiVersion: v1
Kind: Pod
metadata: --元資料定義
spec: --規格配置,定義期望資源物件所處的狀態
status: --物件當前的狀態
apiserver僅接受JSON格式的資源定義
yaml格式提供的配置清單,apiserver可自動將其轉為json格式,而後再提交
kubectl api-versions -- 檢視有那些api版本
大部分資源的配置清單有5個大的資源:
1)apiVersion: group/version $ kubectl api-versions 2)kind: 資源類別 3)metadata: 元資料 name 物件名詞 namespace 所屬名稱空間 lables 自建標籤 annotations 資源註解
每個資源的引用PATH
selfLink: /api/v1/namespaces/default/pods/mysql-45wl2
selflink格式: /api/(GROUP/VERSION)/namespaces/NAMESPACE/TYPE/NAME
4)spec :期望的狀態,disired state
檢視定義 kubectl explain pod.spec.containers
對於型別為OBject的物件,可持續在後面增加查詢欄位,該類物件的子集,沒部分開始要以“-”開頭,如
containers:
- name: myapp
image: mysql:v1.7
5)status: 當前狀態
寫第一個pod
vi fist-ood.yaml
apiVersion: v1Kind: Pod
meatdata: name: pod-demo namespace:default labels: app: myapp tier: frontend spec: containers: - name: myapp image: tomcat:latest
imagePullPolicy: IfNotPresent
ports:
- name: http
containerPort: 80
protocol: TCP
- name: https
containerPort: 443
protocol: TCP
- name: busybox image: busybox:latest command: - "/bin/sh" - "-c" - "sleep 3600"
登陸進去檢視容器日誌:
kubectl exec -it pod-demo -c myapp /bin/bash
資源配置清單:
自主式pod資源
資源的清單格式:
一級欄位: apiVersion(group/version) ,分為alpha,v1beta1,v1beta2,v1,v2等版本
kind,分為pod
metadata, 內容name,namespace,labels,annotaions
spec,內容包括必選項containers,(name, image,imagePullPolicy)
status,當前狀態,只讀的
定義pod時,在spec定義時必選的欄位: