Pod與controllers的關係java
Deployment功能與應用場景node
應用場景: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加端口號能夠訪問