-
在Kubernetes中部署应用程序流程
-
制作镜像(镜像按照作用分:1基础镜像,2运行环境镜像,3项目镜像)
-
dockerfile
-
-
使用控制器部署镜像
-
Deployment
-
StatefulSet
-
DaemonSet
-
-
对外暴漏应用
-
Service
-
Ingress
-
-
日志监控
-
日常运维
-
1. 制作镜像 Dockerfile 2. 使用Deployment控制器部署镜像 kubectl create deployment web --image=nginx kubectl get deployment,pods 3.使用Service发布Pod kubectl expose deployment web --port=80 --type=NodePort --target=80 -name=web kubectl get service
-
Pod 与Deployment的关系
-
Deployment 时最常用的controllers,其他控制器还有DaemonSet,StatefulSet等
-
Controllers作用
-
管理Pod对象
-
-
-
使用标签与Pod关联
-
控制器实现了了Pod的滚动更新,伸缩、副本管理、维护Pod状态等
-
Deployment的功能
-
管理Pod和ReplicaSet
-
具有上线部署、副本设定、滚动升级、回滚等功能
-
提供声明式更新、例如只更新一个新的image
-
-
应用场景:网站、API、微服务
-
创建 Deployment(创建了一个 ReplicaSet,负责启动三个
nginx
Pods)apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.14.2 ports: - containerPort: 80
# kubectl apply -f nginx-deployment.yaml # kubectl get pods NAME READY STATUS RESTARTS AGE nginx-deployment-66b6c48dd5-q2jgt 1/1 Running 0 97s nginx-deployment-66b6c48dd5-qcwxc 1/1 Running 0 97s nginx-deployment-66b6c48dd5-vwpk2 1/1 Running 0 97s # kubectl get deployment NAME READY UP-TO-DATE AVAILABLE AGE nginx-deployment 3/3 3 3 115s
-
根据pod标签创建一个service
# kubectl get pods --show-labels NAME READY STATUS RESTARTS AGE LABELS nginx-deployment-66b6c48dd5-q2jgt 1/1 Running 0 5m36s app=nginx,pod-template-hash=66b6c48dd5 nginx-deployment-66b6c48dd5-qcwxc 1/1 Running 0 5m36s app=nginx,pod-template-hash=66b6c48dd5 nginx-deployment-66b6c48dd5-vwpk2 1/1 Running 0 5m36s app=nginx,pod-template-hash=66b6c48dd5
apiVersion: v1 kind: Service metadata: name: my-service spec: selector: app: nginx # ports: - protocol: TCP port: 80 targetPort: 80 #目标端口 type: NodePort
# kubectl apply -f nginx-service.yaml # kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 4d9h my-service NodePort 10.96.152.189 <none> 80:32152/TCP 24s # 查看是否关联到app=nginx的容器 # kubectl get ep NAME ENDPOINTS AGE kubernetes 10.0.0.100:6443 4d9h my-service 192.168.169.129:80,192.168.169.130:80,192.168.169.131:80 84s # 内网访问 # curl 192.168.169.129 # 查看日志 [root@k8s-master controllers]# kubectl logs nginx-deployment-66b6c48dd5-vwpk2 192.168.235.192 - - [03/Nov/2021:14:39:25 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.29.0" "-" # 外网访问 # curl 10.0.0.101:32152 # 查看日志
-