apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: selector: matchLabels: app: nginx replicas: 3 template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 80
kubectl create -f nignx-deployment.yaml # 執行一下命令能夠查看結果 kubectl get deployments kubectl get rs kubectl get pod -o wide # [root@k8s-master k8s-yaml]# kubectl get pods # NAME READY STATUS RESTARTS AGE # nginx-deployment-59c9f8dff-kbdg6 1/1 Running 0 47s # nginx-deployment-59c9f8dff-lwnj2 1/1 Running 0 47s # nginx-deployment-59c9f8dff-whjt8 1/1 Running 0 47s
apiVersion: v1 kind: Service metadata: name: nginx spec: ports: - port: 8888 targetPort: 80 selector: app:nginx
apiVersion: v1 kind: Service metadata: name: nodeportservice spec: type: NodePort selector: app: nginx ports: - port: 8889 targetPort: 80
# configmap.yaml apiVersion: v1 kind: ConfigMap metadata: name: cm-var data: level: info env: development
[root@k8s-master k8s-yaml]# kubectl create -f configmap.yaml configmap/cm-var created [root@k8s-master k8s-yaml]# kubectl get cm NAME DATA AGE cm-var 2 20s kubectl describe configmap
# pod-configmap.yaml apiVersion: v1 kind: Pod metadata: name: cm-test-pod spec: containers: - name: cn-test image: busybox command: ["/bin/sh", "-c", "env | grep | APP"] env: - name: APPLOGLEVEL # 定義環境變量的名稱 valueFrom: configMapKeyRef: name: cm-var # 環境變量的值取自以上configmap.yaml定義的cm-var key: level # key值爲level - name: APPENV valueFrom: configMapKeyRef: name: cm-var key: env
# pod-envFrom-configmap.yaml apiVersion: v1 kind: Pod metadata: name: cm-test-pod spec: containers: - name: cn-test image: busybox command: ["/bin/sh", "-c", "env"] envFrom: - configMapRef: name: cm-var
# pod-dapi.yaml apiVersion: v1 kind: Pod metadata: name: cm-test-pod spec: containers: - name: cn-test image: busybox command: ["/bin/sh", "-c", "env"] env: - name: podName # 定義環境變量的名稱 valueFrom: fieldRef: podName: metadata.name - name: podId valueFrom: fieldRef: podId: status.podIP
Nignx由1.7.9升級到1.9.1html
# deployment-nginx.yaml apiVersion: v1 kind: Deplopment metadata: name: deployment-nginx spec: selector: matchLabels: app: nginx replicas: 3 template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.7.9 ports: - containersPort: 80 # 建立 # kubeclt create -f deployment-nginx.yaml # 升級 # kebectl set image deplopment/deplopment-nginx nginx=nginx:1.9.1
# 查看回滾命令 kubect rollout history deplopment/deployment-nginx # 回滾到上一版本 kubectl rollout undo deployment/deployment-nginx
經過執行kubectl scale命令或者經過restful api對一個deployment/rc/rs進行pod的副本數量的設置。node
kubectl scale deplopment deployment-nginx --replicase = 5 # 若是設置的replicase 小於初始化的,會「殺掉」一些運行中的Pod.
須要用戶根據某個性能指標或者自定義業務指標,而且指定pod的副本數量範圍,系統將在這個範圍內根據性能指標的變化進行調整。nginx
HPA的資源對象處於api的「autoscaling」中,目前有v1和v2兩個版本,v1只支持基於CPU使用率的自動擴縮容。v2版本則支持基於任意指標的擴容配置,包括基於資源使用率,pod指標api
v1版本須要預先安裝Heapster組件或者Metrics Server 用於採集pod的CPU使用率bash
apiVserion: autoscaling/v1 kind: HorizontalPodAutoscaler metadata: name: v1-auto-nginx spec: scaleTargetRef: # 目標做用對象,能夠是deplopment,rs,rc apiVsersion: apps/v1 kind: Deplopment name: deplopment-nginx minReplicas: 1 maxReplicas: 10 targetCPUUtilizationPercentage: 50 # 指望每一個pod的cpu使用率都是50%
apiVersion: autoscaling/v2beta2 kind: HorizontalPodAutoscaler metadata: name: v2-auto-nginx spec: scaleTargetRef: apiVersion: apps/v1 kind: deployment name: deplopment-nginx minReplicas: 1 maxReplicas: 10 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 50