Kubernetes/4.Kubernetes快速入門

Kubernetes快速入門

通過本章節的學習,你可以充分瞭解到一個https的kubernetes集羣中所需的證書及其作用,以及kubernetes語境內的api資源類型,最後我還補充了幾個基礎的GET命令,此時你可以登錄到上一章節我們使用kubeadm創建的集羣,進行一些查詢操作了。

  • 證書管理
  • API資源模型
  • API資源類型
  • 命令補充
  • 備註

證書管理

k8s證書

k8s於生產環境運行時,我強烈建議大家運行在https的安全環境下,其證書可分爲以下三大類:

root CA:

  • apiserver:apiserver自己的證書
  • apiserver-kubelet-client:kubelet客戶端連接apiserver時的客戶端證書

etcd CA:

  • etcd-server:etcd服務端證書
  • etcd-peer:etcd對等證書,用於etcd集羣間https通信
  • etcd-healthcheck-client:etcd健康檢查的客戶端證書
  • apiserver-etcd-client:apiserver連接etcd的客戶端證書

front-proxy CA:

  • front-proxyserver-client:apiserver(中的聚合器aggregator)於前端的客戶端證書

你需要注意的是:
1) k8s集羣證書默認有效期是90天,你有2個辦法去調整(修改go源文件或者證書籤名請求生成時聲明,如何修改我後面章節會說)
2) 證書的過期時間,你可以到/etc/kubernetes/pki目錄下,使用以下命令進行查看:

openssl x509 -in front-proxy-client.crt   -noout -text  |grep Not
            Not Before: Nov 28 09:07:02 2018 GMT
            Not After : Nov 25 09:07:03 2028 GMT

openssl x509 -in apiserver.crt   -noout -text  |grep Not
            Not Before: Nov 28 09:07:04 2018 GMT
            Not After : Nov 25 09:07:04 2028 GMT

API資源模型

RESTfulAPI的核心組件是“資源(resource)”,不同類別的事物會被抽象會不同“類型(type)”的資源。
k8s中的資源也類似於對象式編程語言中的“類"(class),但它僅支持有限的方法,而且通常是標準的HTTP方法,例如:GET、PUT、POST和DELETE;此時,你應該可以聯想到常用的基礎命令kubelet:

kubectl get pod
kubectl delete node
...
  • 爲了便於獨立進行版本演進,Kubernetes將API劃分爲了稱爲“API羣組”的邏輯集合,每個羣組的REST路徑爲“/apis/$GROUP_NAME/$VERSION”,例如/apis/apps/v1;
  • 核心羣組core使用簡化的REST路徑/api/v1;
  • 同時,每個羣組可同時存在多個不同級別的版本,主要包括alpha、beta和stable三個,使用的級別標識如v1alpha1、v1beta2和v1等。

你可以通過api-versions命令查詢當前所支持的API版本:

[root@k8s-etcd-mater01 cds-filesystem]# 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
autoscaling/v2beta2
batch/v1
batch/v1beta1
certificates.k8s.io/v1beta1
coordination.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

API資源類型

API資源類型

如圖所示,Kubernetes系統把管理的絕大多數事物都抽象成了資源,它們分別代表着不同的事物類型,例如:Node、Service、Pod、Controller等等

  • 每種類型均可通過“屬性賦值”進行實例化,從而構建出“對象(object);
  • 對象主要用於描述要在集羣中運行的“應用程序(Pod)”,以及應用程序相關的控制(controllers)、配置(ConfigMap和Secret)、服務暴露(Service和Ingress)、存儲(Volume)等;
  • 用戶使用這些對象來規劃、部署、配置、維護和監控應用程序並記錄運行日誌;
  • 每種類型的資源對象都支持相應的一組方法(管理操作),它們可用標準的HTTP Verb進行表示,例如:GET、PUT、DELETE和POST等。

命令補充

    獲取集羣資源列表:
        kubectl  api-resources

    獲取命名空間:
        kubectl  get ns

    創建deployment: 
        kubectl create deployment ngx-new --image=nginx

    查看service信息:
         kubectl describe svc ngx-new
    ...

備註

本文原址位於我的Github,我會陸續將所有專題更新過來,其中包括docker、k8s、ceph、istio和prometheus,旨在分享雲原生中大而全的技術知識點和實操過程,如果對你有用,請follow、star我的github,這也是我更新、分享下去的動力,謝謝~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章