Kubernetes 筆記-001

組件協作:
kubectl run httpd-app --image=httpd --replicas=2
kubectl get deployment
過程:
1、kubectl發送部署請求到api server
2、api server通知controller manager創建要給deployment資源
3、scheduler執行調度任務,將兩個副本pod分發到node1和node2
4、node1和node2上的kubectl在各自的節點上創建並運行Pod
注意:
1)應用的配置和當前狀態信息保存在etcd中

kubectl get pod
kubectl describe pod podname1
1)用戶通過kubectl創建Deployment
2)Deployment創建ReplicaSet
3)ReplicaSet創建Pod

Kubernetes支持兩種創建資源的方式:
1)用kubectl命令直接創建
如:kubectl run nginx-deployment --image=nginx --replicas=2
在命令行中通過參數指定資源的屬性

2)通過配置文件和kubectl apply 創建
如:kubectl apply -f nginx.yml
apiVersion: extensions/v1beta1  #當前配置格式的版本
kind: Deployment                #要創建的資源類型
metadata:                       #該資源的元數據
  name: nginx-deployment        #name是必須的元數據項
spec:                           #該Deployment的規格說明
  replicas:                     #指明副本數量,默認爲1
  template:                     #定義Pod的模板,這是配置文件的重要部分
    metadata:                   #Pod的元數據
      labels:                   #至少定義一個label
        app: web_server         #label的key和value可以任意指定
    spec:                       #描述Pod的規格,定義Pod中每一個容器的屬性
      containers:
        - name: nginx-deployment #必填 
          image: nginx:1.7.9     #必填

kubectl apply -f nginx.yml --validate=false
kubectl get deployment
kubectl get replicaset

刪除資源
kubectl delete deployment nginx-deployment
kubectl delete -f nginx.yml

處於安全考慮,默認配置下,kubernetes不會將pod調度到master節點,如果希望將主節點也當作Node使用,可以執行以下命令:
kubectl taint node k8s-master node-role.kubernetes.io/master-

如果要恢復Master Only狀態,執行如下命令:
kubectl taint node k8s-master node-role.kubernetes.io/master="":NoSchedule

Failover
1、其中一個節點故障,kubernetes會檢查到該節點不可用,將節點上的Pod標記爲Unknow狀態,並且在其他的節點創建兩個Pod
維持總副本數
2、當故障節點恢復後,Unknow的Pod會被刪除,已經運行的Pod不會重新調度回原節點

用label控制Pod的位置
1、默認配置下,Schedule會將Pod調度到所有可用的Node,Kubernetes通過label來指定Pod部署到指定的Node

kubectl label node k8s-node1 disktype=ssd #標註k8s配置了ssd的節點
kubectl get node --show-labels
disktype=ssd 已經成功添加到k8s-node1,除了disktype,Node還有幾個kubernetes自己維護的label

2、有了disktype這個自定義的label,接下來就是可以指定將Pod部署到k8s-node1,如下:
apiVersion: extensions/v1beta1  #當前配置格式的版本
kind: Deployment                #要創建的資源類型
metadata:                       #該資源的元數據
  name: nginx-deployment        #name是必須的元數據項
spec:                           #該Deployment的規格說明
  replicas:                     #指明副本數量,默認爲1
  template:                     #定義Pod的模板,這是配置文件的重要部分
    metadata:                   #Pod的元數據
      labels:                   #至少定義一個label
        app: web_server         #label的key和value可以任意指定
    spec:                       #描述Pod的規格,定義Pod中每一個容器的屬性
      containers:
        - name: nginx-deployment #必填 
          image: nginx:1.7.9     #必填
      nodeSelector:
          disktype: ssd

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