1. 程式人生 > >kubernetes資源清單定義入門

kubernetes資源清單定義入門

Kubernetes資源清單定義

Kubernetes是ReSTful風格的API
GET,PUT,DELETE,POST
kubectl run ,get,edit

資源,物件
workload:Pod,Replicaset,Statefulset,Daemonset,job,Cronjob等
服務發現和負載均衡:service,Ingress..
配置和儲存:Volume,CSI
    ConfigMap,Secret
    DownwardAPI
叢集級的資源
    Namespace,Node,Role,ClusterRole,RoleBinding(角色繫結),ClusterRoleBinding(叢集角色繫結)
元資料型資源
    HPA,PodTemplate(控制器建立的模板),LimitRange(資源限制模板)

api群組三個級別:apiversion

內測版

beta 測試版本 公測 (不穩定)

v1 穩定版

一般時候可以使用配置清單來建立
我們來檢視一下之前建立的Pod

[[email protected] ~]# kubectl get pods
NAME                          READY     STATUS    RESTARTS   AGE
client                        1/1       Running   0          11h
myapp-848b5b879b-4xpl7        1/1       Running   0          10h
myapp-848b5b879b-7gtn4        1/1       Running   0          10h
myapp-848b5b879b-xtcdd        1/1       Running   0          10h
nginx-deploy-5b595999-fsxlp   1/1       Running   0          11h
[[email protected] ~]# kubectl get pod myapp-848b5b879b-4xpl7
NAME                     READY     STATUS    RESTARTS   AGE
myapp-848b5b879b-4xpl7   1/1       Running   0          10h
[[email protected] ~]# kubectl get pod myapp-848b5b879b-4xpl7 -o yaml
apiVersion: v1
kind: Pod 	#類別
metadata: #巢狀欄位
  creationTimestamp: 2018-09-04T17:07:58Z
  generateName: myapp-848b5b879b-
  labels:
    pod-template-hash: "4046164356"
    run: myapp
  name: myapp-848b5b879b-4xpl7
  namespace: default
  ownerReferences:
  - apiVersion: apps/v1
    blockOwnerDeletion: true
    controller: true
    kind: ReplicaSet
    name: myapp-848b5b879b
    uid: 41924f50-b061-11e8-a432-000c29f33006
  resourceVersion: "10899"
  selfLink: /api/v1/namespaces/default/pods/myapp-848b5b879b-4xpl7
  uid: 1259f6af-b065-11e8-a432-000c29f33006
spec:  #非常重要的欄位,資源規範
  containers:
  - image: ikubernetes/myapp:v1
    imagePullPolicy: IfNotPresent
    name: myapp
    resources: {}
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File
    volumeMounts:
    - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
      name: default-token-8zzcr
      readOnly: true
  dnsPolicy: ClusterFirst
  nodeName: node1
  priority: 0
  restartPolicy: Always
  schedulerName: default-scheduler
  securityContext: {}
  serviceAccount: default
  serviceAccountName: default
  terminationGracePeriodSeconds: 30
  tolerations:
  - effect: NoExecute
    key: node.kubernetes.io/not-ready
    operator: Exists
    tolerationSeconds: 300
  - effect: NoExecute
    key: node.kubernetes.io/unreachable
    operator: Exists
    tolerationSeconds: 300
  volumes:
  - name: default-token-8zzcr
    secret:
      defaultMode: 420
      secretName: default-token-8zzcr
status:#只讀的欄位
  conditions:
  - lastProbeTime: null
    lastTransitionTime: 2018-09-04T17:07:57Z
    status: "True"
    type: Initialized
  - lastProbeTime: null
    lastTransitionTime: 2018-09-04T17:07:58Z
    status: "True"
    type: Ready
  - lastProbeTime: null
    lastTransitionTime: null
    status: "True"
    type: ContainersReady
  - lastProbeTime: null
    lastTransitionTime: 2018-09-04T17:07:58Z
    status: "True"
    type: PodScheduled
  containerStatuses:
  - containerID: docker://8e757445c75729e865de6462d7dc4e849909776f8a34657ceab3f11baf569c0d
    image: ikubernetes/myapp:v1
    imageID: docker-pullable://ikubernetes/
[email protected]
:9c3dc30b5219788b2b8a4b065f548b922a34479577befb54b03330999d30d513 lastState: {} name: myapp ready: true restartCount: 0 state: running: startedAt: 2018-09-04T17:07:58Z hostIP: 192.168.68.20 phase: Running podIP: 10.244.1.8 qosClass: BestEffort startTime: 2018-09-04T17:07:57Z

建立資源的方法:
    apiserver僅僅接收JSON格式的資源定義;
    yaml格式提供的配置清單,apiserver可以自動將其轉化為json格式,而後在提交

大部分資源的格式清單:
    apiVersion  建立屬於哪個群組和哪個版本,注意大小寫 kubectl api-versions獲取
    
    kind:資源類別

    metadata:元資料
        name
        namespace
        labels  標籤
        annotations

        每個資源引用的路徑PATH
            /api/GROUP/VERSION/namespaces/NAMESPACE/TYPE/NAME
            大寫的替換
    
    spec:期望的狀態:disired state

    status:當前狀態,current state,本欄位有kubernets自己建立,讓當前的狀態向期望的狀態靠近
    檢視pod資源如何定義kubectl explain pods


建立第一個yaml檔案:一個pod上面建立的兩個容器

[[email protected] manifests]# cat pod-demo.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: pod-demo
  namespace: default
  labels:
    app: myapp
    tier: frontend
spec:
  containers:
  - name: myapp
    image: ikubernetes/myapp:v1
  - name: busybox
    image: busybox:latest
    command:
    - "/bin/sh"
    - "-c"
    - "sleep 3600"

開始建立:kubectl create -f pod-demo.yaml

檢視自己的建立:kubectl get pod

[[email protected] manifests]# kubectl get pod
NAME                          READY     STATUS    RESTARTS   AGE
client                        1/1       Running   0          13h
myapp-848b5b879b-4xpl7        1/1       Running   0          12h
myapp-848b5b879b-7gtn4        1/1       Running   0          12h
myapp-848b5b879b-xtcdd        1/1       Running   0          12h
nginx-deploy-5b595999-fsxlp   1/1       Running   0          13h
pod-demo                      2/2       Running   0          1m

刪除自己的建立:kubectl delete -f pod-demo.yaml

獲取剛建立pod-demo的詳細資訊:
kubectl describe pods pod-demo

[[email protected] manifests]# kubectl describe pods pod-demo
Name:               pod-demo  #資源名
Namespace:          default   #名稱空間
Priority:           0
PriorityClassName:  <none>
Node:               node2/192.168.68.30 #執行在哪個節點
Start Time:         Wed, 05 Sep 2018 13:33:26 +0800
Labels:             app=myapp  #標籤
                    tier=frontend 
Annotations:        <none>
Status:             Running
IP:                 10.244.2.10
Containers:
  myapp:  #第一個容器
    Container ID:   docker://aa6be83a949e31c1935fe607e9238fd3bc64b51bfa851350ea502c31371d07e4
    Image:          ikubernetes/myapp:v1
    Image ID:       docker-pullable://ikubernetes/[email protected]:9c3dc30b5219788b2b8a4b065f548b922a34479577befb54b03330999d30d513
    Port:           <none>
    Host Port:      <none>
    State:          Running
      Started:      Wed, 05 Sep 2018 13:33:26 +0800
    Ready:          True
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-8zzcr (ro)
  busybox:  #第二個容器
    Container ID:  docker://942c9ee53afcc890cbd1471877c5ecca238a8eb9de40fd5399bc3bbfd9e42d28
    Image:         busybox:latest
    Image ID:      docker-pullable://[email protected]:cb63aa0641a885f54de20f61d152187419e8f6b159ed11a251a09d115fdff9bd
    Port:          <none>
    Host Port:     <none>
    Command:
      /bin/sh
      -c
      sleep 3600
    State:          Running
      Started:      Wed, 05 Sep 2018 13:33:31 +0800
    Ready:          True
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-8zzcr (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             True 
  ContainersReady   True 
  PodScheduled      True 
Volumes:
  default-token-8zzcr:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-8zzcr
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
Events: #建立的詳細資訊
  Type    Reason     Age   From               Message
  ----    ------     ----  ----               -------
  Normal  Scheduled  3m    default-scheduler  Successfully assigned default/pod-demo to node2
  Normal  Pulled     3m    kubelet, node2     Container image "ikubernetes/myapp:v1" already present on machine
  Normal  Created    3m    kubelet, node2     Created container
  Normal  Started    3m    kubelet, node2     Started container
  Normal  Pulling    3m    kubelet, node2     pulling image "busybox:latest"
  Normal  Pulled     3m    kubelet, node2     Successfully pulled image "busybox:latest"
  Normal  Created    3m    kubelet, node2     Created container
  Normal  Started    3m    kubelet, node2     Started container
檢視myapp的訪問日誌:
[[email protected] manifests]# curl 10.244.2.10        #ip是上面生成的
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>
[[email protected] manifests]# kubectl logs pod-demo myapp
10.244.0.0 - - [05/Sep/2018:05:45:35 +0000] "GET / HTTP/1.1" 200 65 "-" "curl/7.29.0" "-"
10.244.0.0 - - [05/Sep/2018:05:45:44 +0000] "GET / HTTP/1.1" 200 65 "-" "curl/7.29.0" "-"


pod建立的監控:
kubectl get pods -w

刪除pod-demo專案:
[[email protected] manifests]# kubectl delete pods pod-demo
pod "pod-demo" deleted
[[email protected] manifests]# kubectl get pod
NAME                          READY     STATUS    RESTARTS   AGE
client                        1/1       Running   0          13h
myapp-848b5b879b-4xpl7        1/1       Running   0          12h
myapp-848b5b879b-7gtn4        1/1       Running   0          12h
myapp-848b5b879b-xtcdd        1/1       Running   0          12h
nginx-deploy-5b595999-fsxlp   1/1       Running   0          13h
通過kubectl api-versions 可以檢視api的版本
[[email protected] ~]# kubectl api-versions
admissionregistration.k8s.io/v1beta1
apiextensions.k8s.io/v1beta1
apiregistration.k8s.io/v1
apiregistration.k8s.io/v1beta1
apps/v1
apps/v1beta1
apps/v1beta2
authentication.k8s.io/v1
authentication.k8s.io/v1beta1 #公測版本
authorization.k8s.io/v1
authorization.k8s.io/v1beta1
autoscaling/v1
autoscaling/v2beta1
batch/v1
batch/v1beta1
certificates.k8s.io/v1beta1
events.k8s.io/v1beta1
extensions/v1beta1
networking.k8s.io/v1
policy/v1beta1
rbac.authorization.k8s.io/v1
rbac.authorization.k8s.io/v1beta1
scheduling.k8s.io/v1beta1
storage.k8s.io/v1
storage.k8s.io/v1beta1
v1

相關推薦

kubernetes系列06—kubernetes資源清單定義入門

container 4.3 socket complete 參數 touch ber ont blog 本文收錄在容器技術學習系列文章總目錄 1、認識kubernetes資源 1.1 常用資源/對象 workload工作負載型資源:pod,ReplicaSet,

kubernetes資源清單定義入門

Kubernetes資源清單定義 Kubernetes是ReSTful風格的APIGET,PUT,DELETE,POST kubectl run ,get,edit 資源,物件workload:Pod,Replicaset,Statefulset,Daemonset,jo

kubernetes資源清單定義

apiVersion: v1    #必選,版本號,例如v1,版本號必須可以用 kubectl api-versions 查詢到 . kind: Pod        #必選,Pod metadata:        #必選,元資料 name: string    #必選,Pod名稱 namespace: s

Kubernetes學習之路(十一)之資源清單定義

map latest dem kubectl 服務發現 bject 均衡 ima limit 一、Kubernetes常用資源 以下列舉的內容都是 kubernetes 中的 Object,這些對象都可以在 yaml 文件中作為一種 API 類型來配置。 類別 名稱

kubernetes資源清單

  五個一級欄位:   apiVersion:形式:組名/version。對介面分組進行管理。檢視:kubectl api-versions。v1是核心群組。內測,公測,V1版   kind:   metadata:元資料     name:     namespace:k8s中的概念。

KUBERNETES-1-3-資源清單

1.kubectl explain pods可以看到建立pod的五個必要引數,apiVersion,kind ,metadata ,spec  , status  。這裡還可以通過增加  .  的方式進一步深度查詢。 [[email p

自然語言處理(NLP)入門學習資源清單

致謝 鍾崇光博士參與了資料派THU於6月5日、THU資料派於6月8日釋出的《循序漸進提升Kaggle競賽模型精確度,以美國好事達保險公司理賠為例》一文的校對工作,並且給出了許多有建設性的意見,在此資料派翻譯組對鍾博士表達誠摯的感謝! 作者:Melanie Tosik

最好的入門自然語言處理(NLP)的資源清單

Melanie Tosik目前就職於旅遊搜尋公司WayBlazer,她的工作內容是通過自然語言請求來生產個性化旅遊推薦路線。回顧她的學習歷程,她為期望入門自然語言處理的初學者列出了一份學習資源清單。 目錄: ·  線上課程 ·  圖書館和開放資源 ·  活躍的

Kubernetes資源清單與Pod的生命週期(二)

一、資源清單 1,定義:   在k8s中一般使用yaml格式的檔案來建立符合我們預期的資源,這樣的yaml被稱為資源清單。   使用資源清單建立Pod: kubectl apply -f nginx.yaml   定義nginx.yaml內容為: apiVersion: v1 kind: Pod met

如何自定義Kubernetes資源

目前最流行的微服務架構非`Springboot+Kubernetes+Istio`莫屬, 然而隨著越來越多的微服務被拆分出來, 不但Deploy過程boilerplate的配置越來越多, 且繁瑣易錯, 維護成本也逐漸增高, 那麼是時候採用k8s提供的擴充套件自定義資源的方法, 將重複的template抽到後面

謝煙客---------Linux之DNS請求流程及資源記錄定義

博客 linux 運維 遊戲 it 互聯網DNS類型/同步類型/域和區域的區別SOA內部數據特性DNS負載均衡(Load balance)的實現緩存DNS服務器緩存定義、作用、多級緩存一次完整的解析請求解析答案DNS分布式特點區域解析庫/RR/RR_TYPEA記錄的輪循、多主機名對同一個主機、泛域名解析<

MVC4.0:未能加載文件或程序集“Newtonsoft.Json, Version=4.5.0.0 ”或它的某一個依賴項。找到的程序集清單定義與程序集引用不匹配

tex 原來 log 解決 center png 高版本 不一致 清單 在搭建MVC4.0項目的時候遇到報錯如下: 根據錯誤提示,查看程序集清單中引用版本為4.5.11,清單如下: 圖1 再看了下項目具體引用版本為6.0.0.0,如下: 圖2 項目實際引用版本與項目程序

托管資源與非托管資源定義

釋放 post resource 防止 刪除對象 pre 第一次 性能 版本 托管資源指的是.NET可以自動進行回收的資源,主要是指托管堆上分配的內存資源。托管資源的回收工作是不需要人工幹預的,有.NET運行庫在合適調用垃圾回收器進行回收。 非托管資源指

在線培訓 | Kubernetes部署與使用入門

Kubernetes容器技術憑借其輕量化和快速部署的特性,被越來越多企業開發者贊譽,近兩年來發展態勢可謂炙手可熱。去年一年,Kubernetes的流行度持續快速上升,我們有理由相信在不遠的未來,Kubernetes將成為通用的基礎設施標準。開源的全棧化企業級容器管理平臺Rancher,憑借優異的基礎設施服務管

Kubernetes(k8s)入門、單機版安裝、kuberctl指令、k8s服務實例

單機版 nbsp href Kubernete net 實例 http itl 安裝 https://blog.csdn.net/qq_34701586/article/details/78732470Kubernetes(k8s)入門、

深入解析 kubernetes 資源管理,容器雲牛人有話說

系統 關系 充足 sig 配置信息 解釋 進行 解決 由於 資源,無論是計算資源、存儲資源、網絡資源,對於容器管理調度平臺來說都是需要關註的一個核心問題。 ? 如何對資源進行抽象、定義?? 如何確認實際可以使用的資源量?? 如何為容器分配它所申請的資源? 這些問題都是平

kubernetes 資源請求和限制

container 就會 如果 嚴格 可用 source 特殊情況 資源 節點 1. spec: containers: - name: example resources: requests:

Kubernetes 1.3 從入門到進階 安裝篇(1)

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

kubernetes資源創建詳解【持續完善中】

edi arr 顯示 replicat _id describe load 主機名 create 目錄 資源創建詳解 一:Pod及常用參數 1.簡介 2.模板 3.刪除pod 4.設置Pod主機名 5.鏡像拉取策略(ImagePullPolicy) 二:RC 1.簡介