1. 程式人生 > 實用技巧 >kubernetes資源物件

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定義時必選的欄位: