Kubernetes/4.Kubernetes快速入門

Kubernetes快速入門

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

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

證書管理

k8s證書

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

root CA:nginx

  • apiserver:apiserver本身的證書
  • apiserver-kubelet-client:kubelet客戶端鏈接apiserver時的客戶端證書

etcd CA:git

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

front-proxy CA:github

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

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

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三個,使用的級別標識如v1alpha一、v1beta2和v1等。

你能夠經過api-versions命令查詢當前所支持的API版本: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,這也是我更新、分享下去的動力,謝謝~bash

相關文章
相關標籤/搜索