ReplicaSet
RC:ReplicationController(老一代的Pod控制器)
用於確保由其管控的Pod對象副本數量,能夠滿足用戶期望,多則刪除,少則通過模板創建。
特點:
- 確保Pod資源的對象的數量精準
- 確保Pod監控運行
- 彈性伸縮。
同樣,它也可以通過yaml或json格式的資源清單來創建。其中spec字段一般嵌套一下字段
- replicas:期待的Pod對象副本數量
- selector:當前控制器匹配Pod對象副本的標籤選擇器
- template:Pod副本的模板
與RC相比而言,RS不僅支持基於等值的標籤選擇器,而且還支持基於集合的標籤選擇器。
標籤:解決同類型的資源對象越來越多,爲了更好的管理,按照標籤分組。
常用標籤分類:
release(版本信息):stable(穩定版), canary(金絲雀版本), beta(測試版)
environment(環境變量):dev(開發),qa(測試), production(生產)
application(應用):ui, as(application software 引用軟件), pc, sc
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必須爲空。
使用標籤選擇器的邏輯:
- 同時指定的多個標籤之間的邏輯關係爲“與”操作。
- 使用空值的標籤選擇器意味着每個資源對象都將被選擇中。
- 空的標籤選擇器無法選中任何資源。
DaemonSet
它也是一種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.基於用戶的認證授權機制