Kubernetes之Deployment控制器

  Pod與controllers的關係java

  • controllers:在集羣上管理和運行容器的對象
  • 經過label-selector相關聯
  • Pod經過控制器實現應用的運維,如伸縮,滾動升級等

 

   Deployment功能與應用場景node

  • 部署無狀態應用
  • 管理Pod和ReplicaSet
  • 具備上線部署,副本設定,滾動升級,回滾等功能
  • 提供聲明式更新,例如只更新一個新的Image

  應用場景:Web服務,微服務python

  yaml字段解析 nginx

  模板web

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-depolyment
  namespace: default
spec:
  replicas: 3
  selector:
    matchLables:
      app: nginx
  template:
    metadate:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80

  建立deployment的yaml的文件後端

kubectl create deployment web --image=nginx --dry-run -o yaml

  

apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: web
  name: web
spec:
  replicas: 1
  selector:
    matchLabels:
      app: web
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: web
    spec:
      containers:
      - image: nginx
        name: nginx
        resources: {}
status: {}

  重定向到一個文件api

kubectl create deployment web --image=nginx --dry-run -o yaml >web.yaml

  修改該yaml文檔成測試的java-demotomcat

apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: web
  name: web
spec:
  replicas: 3
  selector:
    matchLabels:
      app: web
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: web
    spec:
      containers:
      - image: lizhenliang/java-demo
        name: java
        resources: {}
status: {}

  執行app

kubectl apply -f web.yaml

  查看負載均衡

kubectl get pods

 

   查看容器日誌,顯示端口已經啓動

kubectl logs web-867dd4dcf-fsgq8

 

   部署完應用怎麼讓應用暴露外部訪問

  service和ingress兩種方法暴露

  查看部署deploy

kubectl get deploy

 

   應用發佈

kubectl expose --name=web deployment web --port=80 --target-port=8080 --type=NodePort

  指定資源的類型是deployment

  指定資源的名稱是web  

  指定service做爲這一組的訪問入口,負載均衡到後端的端口 指定爲80

  --target-port指定後端tomcat的端口

  --name指定service的名稱,若是不指定和deployment的名稱是同樣的

  --type指定service的類型爲NodePort分配一個隨機的端口

  想要產生一個yaml使用如下命令

kubectl expose --name=web deployment web --port=80 --target-port=8080 --type=NodePort --dry-run -o yaml

  

apiVersion: v1
kind: Service
metadata:
  creationTimestamp: null
  labels:
    app: web
  name: web
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 8080
  selector:
    app: web
  type: NodePort
status:
  loadBalancer: {}

  查看建立的service

kubectl get service

 

   使用node的ip加端口號能夠訪問

相關文章
相關標籤/搜索