Kubernetes快速入門
通過本章節的學習,你可以充分瞭解到一個https的kubernetes集羣中所需的證書及其作用,以及kubernetes語境內的api資源類型,最後我還補充了幾個基礎的GET命令,此時你可以登錄到上一章節我們使用kubeadm創建的集羣,進行一些查詢操作了。
- 證書管理
- API資源模型
- API資源類型
- 命令補充
- 備註
證書管理
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資源類型
如圖所示,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,這也是我更新、分享下去的動力,謝謝~