第4章 应用程序声明周期管理(上)

应用程序声明周期管理

• 在Kubernetes中部署应用流程

• 服务编排(YAML)

• Deployment工作负载均衡器

• 介绍

• 应用生命周期管理流程

• 应用部署

• 应用升级

• 水平扩缩容

• 回滚

• 滚动升级与回滚实现机制

4.1 在Kubernetes部署应用程序流程    

   Dockfile        —>   Deployment                           service

                                      StatefulSet                            Ingress  
                                      DaemonSet

4.2 使用Deployment部署java应用  

0、制作镜像
1、使用Deployment控制器部署镜像
kubectl create deployment web --image=lizhenliang/java-demo
kubectl get deployment,pods
2、使用Service发布Pod
kubectl expose deployment web --port=80 --type=NodePort --target-port=8080 --name=web
kubectl get service  

4.3服务编排:YAML文件格式说明

K8s是一个容器编排引擎,使用YAML文件编排要部署应用,因此在学习之前,应先了解YAML语法格式:
• 缩进表示层级关系
• 不支持制表符“tab”缩进,使用空格缩进
• 通常开头缩进 2 个空格
• 字符后缩进 1 个空格,如冒号、逗号等
• “---” 表示YAML格式,一个文件的开始
• “#”注释

4.4 服务编排:YAML文件创建资源对象

等同于:kubectl create deployment web --image=lizhenliang/java-demo --replicas=3 -n default

 

 

等同于:kubectl expose deployment web --port=80 --target-port=8080 --type=NodePort -n default

Deployment:

复制代码
apiVersion: apps/v1
kind: Deployment
metadata:
 name: web
 namespace: aliang-cka
spec:
 replicas: 1
 selector:
  matchLabels:
   project: demo
   app: java
 template:
  metadata:
   labels:
     project: demo
     app: java
  spec:
   containers:
   - name: web
     image: lizhenliang/java-demo
复制代码

Service:

复制代码
apiVersion: v1
kind: Service
metadata:
 name: web
 namespace: aliang-cka
spec:
 ports:
 - port: 80
   protocol: TCP
   targetPort: 8080
 selector:
  project: demo
  app: java
 type: NodePort
复制代码

4.5服务编排:使用kubectl对YAML文件创建资源对象

将你需要创建的资源描述到YAML文件中  

部署:kubectl  apply -f xxx.yaml

卸载:kubectl delete -f  xxx.yaml

4.6 服务编排:资源字段太多,记不住怎么办

• 用create命令生成
kubectl create deployment nginx --image=nginx:1.16 -o yaml --dry-run=client > my-deploy.yaml
• 用get命令导出
kubectl get deployment nginx -o yaml > my-deploy.yaml
• Pod容器的字段拼写忘记了
kubectl explain pods.spec.containers
kubectl explain deploymen
4.6.1 MatchLables与lables的注意事项:

1)      两边标签保持一样

2)      标签可以写多个

3)      标签与其他应用保持唯一

4)      标签一般怎么写:一般根据应用程序属性写,例如应用名称、项目名称

Project: big

App: search

Service里的selector要与deployment中的matchLabels保持一样。

replicas:副本数量,即多少个Pod(多少个应用实例)

4.6.2 YAML检测语法(--dry-run=client/server):
 kubectl  create deployment web --image=lizhenliang/java-demo --replicas=3 -n alinag-cka --dry-run=client/server
客户端,例如kubectl(多个客户端同时提交一个请求,同时修改的是一个资源) -> 服务端API
1、提交一个yaml,这个yaml之前部署过,这次修改了内容,只关心更新哪些字段
2、同一时刻提交并进行合并应用

 

posted @   逆风飞翔的博客  阅读(11)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
点击右上角即可分享
微信分享提示