RC:ReplicationController(老一代的Pod控制器)前端
用於確保由其管控的Pod對象副本數量,可以知足用戶指望,多則刪除,少則經過模板建立。nginx
特色:web
一樣,它也能夠經過yaml或json格式的資源清單來建立。其中spec字段通常嵌套一下字段json
與RC相比而言,RS不只支持基於等值的標籤選擇器,並且還支持基於集合的標籤選擇器。vim
標籤:解決同類型的資源對象愈來愈多,爲了更好的管理,按照標籤分組。後端
經常使用標籤分類:api
release(版本信息):stable(穩定版), canary(金絲雀版本), beta(測試版)緩存
environment(環境變量):dev(開發),qa(測試), production(生產)架構
application(應用):ui, as(application software 引用軟件), pc, scapp
tier(架構層級):frontend(前端), backend(後端), cache(緩存)
partition(分區):customerA(客戶A), customerB(客戶B)
triack(品控級別):daily(天天), weekly(每週)
標籤要作到:見名知意。
[root@master ~]# vim label.yaml
kind: Pod apiVersion: v1 metadata: name: labels labels: env: qa tier: frontend spec: containers: - name: myapp image: httpd
[root@master ~]# kubectl apply -f label.yaml
pod/labels created
//經過--show-labels顯示資源對象的標籤。
[root@master ~]# kubectl get pod --show-labels
//經過-l,查看僅包含某個標籤的資源
[root@master ~]# kubectl get po -L env,tier
[root@master ~]# kubectl get po -l env,tier
給labels資源添加標籤:
[root@master ~]# kubectl label pod labels app=pc pod/labels labeled
查看labels資源標籤:
[root@master ~]# kubectl get pod -l app
[root@master ~]# kubectl get pod -l tier --show-labels
給labels資源刪除標籤:
[root@master ~]# kubectl label pod labels app- pod/labels labeled
給labels資源修改標籤:
[root@master ~]# kubectl label pod labels env=dev --overwrite pod/labels labeled
[root@master ~]# vim label-svc.yaml
apiVersion: v1 kind: Service metadata: name: labels-svc spec: type: NodePort selector: env: qa tier: frontend ports: - protocol: TCP port: 80 targetPort: 80
[root@master ~]# kubectl apply -f label-svc.yaml service/labels-svc created
[root@master ~]# kubectl describe svc labels-svc
若是標籤有多個,標籤選擇器選擇其中一個,也能夠關聯成功,相反,若是選擇器有多個,那麼標籤必須徹底知足條件,才能夠關聯成功!
標籤選擇器:標籤的查詢過濾條件。
基於等值關係的(equality-based):「=」,「==」,「!」 前面兩個都是相等,最後是不等
基於集合關係(set-based):in, notin, exits三種。
例子:
[root@master ~]# vim slector.yaml
selector: matchLabels: app: nginx matchExpressions: - {key: name,operator: In,values: [zhangsan,lisi]} - {key: age,operator: Exists,values:}
matchLabels:指定鍵值對錶示的標籤選擇器。
matchExpressions:基於表達式來指定的標籤選擇器。選擇器列表間爲「邏輯與」關係;使用ln或者Notln操做時,其values不強制要求非空的字符串列表,而使用Exists或DostNotExist時,其values必須爲空。
使用標籤選擇器的邏輯:
它也是一種Pod控制器。
使用場景:若是必須將Pod運行在固定的某個或幾個節點,且要優先於其餘Pod的啓動。一般狀況下,默認會每一個節點都會運行,而且只能運行一個Pod。這種狀況推薦使用DaemonSet資源對象。
監控程序:
日誌收集程序:
[root@master ~]# kubectl get ds -n kube-system
運行一個web程序,在每個節點都運行一個Pod。
[root@master ~]# vim daemonset.yaml
kind: DaemonSet apiVersion: extensions/v1beta1 metadata: name: test-ds spec: template: metadata: labels: name: test-ds spec: containers: - name: test-ds image: httpd
[root@master ~]# kubectl apply -f daemonset.yaml
daemonset.extensions/test-ds created
RC, RS, Deployment, DaemonSet。Pod控制器。 statfulSet,lngress。pod
RBAC.基於用戶的認證受權機制