k8s发版流程

pod基本概念

一个pod可以对应多个容器,每个容器可以对应一个应用。

1 最小部署的单元

2 包含多个容器(一组容器的集合)

3 一个pod中容器共享网络命名空间

4 pod是短暂的

pod存在意义

1 创建容器使用docker,一个docker对应是一个容器,一个容器有进程,一个容器运行一个应用程序

2 pod是多进程设计,运行多个应用程序

一个pod有多个容器,一个容器里面运行一个应用程序

pod存在为了亲密性应用

两个应用之间进行交互

网络之间调用

两个应用需要频繁调用

pod实现机制

共享网络

共享存储

共享网络:通过paus容器,把其它业务容器加入到Pause容器里面,让所有业务容器在同一个名称命名空间中,可以实现网络共享

共享存储:引入数据卷概念Volumn,使用数据卷进行持久化存储

controller

在集群上管理和运行集群容器的对象

pod和controller的关系

pod是通过Controller实现应用的运维比如伸缩,滚动升级等等

pod和controller之间通过label标签建立关系 selector

controller常用类型

deployment

部署无状态应用

管理pod和replicaset

部署 滚动升级等功能

无状态

认为pod都是一样的

没有顺序要求

不用考虑在那个node运行

对一进行伸缩和扩展

有状态

上面因素都需要考虑

让每个pod独立的,保持pod启动顺序和唯一性

唯一的网络标识符,持久存储

有序,比如mysql主从

部署有状态应用

无头service ClusterIP:none

statefulset

部署守护进程

Daemonset 所有的pod都运行在一个进程中

部署一次性任务

job

部署定时任务

cronjob

导出yaml文件

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

使用yaml部署应用

kubectl apply -f web.yaml

对外发布(暴露对外端口号)

kubectl expose deployment web --port=80 --type=NodePort --target-port=80 --name =web1 -o yaml > web1.yaml

kubectl get pods.svc

常见的sevice类型

ClusterIp 集群内部使用

NodePort 对外访问应用使用

LoadBalancer 对外访问应用使用,公有云

在k8s集群部署项目

1 容器交付流程

2 k8s部署项目流程

容器交付流程

开发代码阶段(编写代码,测试,编写dockerfile)

持续交付/集成(代码编译打包,制作镜像,上传镜像仓库)

应用部署(坏境准备,Pod,Service,Ingress)

运维(监控,故障排查,升级优化)

k8s部署项目流程

制作镜像(dockerfile)

推送镜像仓库(阿里云,私有云等)

控制器部署镜像(Deployment)

对外暴露应用(service,ingress)

运维(监控,升级)

制作镜像

docker build -t 项目的jar包或者是war包:latest

docker image

上传镜像

登录镜像服务器

docker loging --user

为镜像添加版本号

docker tag 镜像id 镜像服务器地址/镜像目录/jar或war名称:1.0.0

实施推送

docker push 镜像id 镜像服务器地址/镜像目录/jar或war名称:1.0.0

部署镜像暴露应用

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

kubectl apply -f web.yaml

kubectl expose deployment web --port=80 --type=NodePort --target-port=80 --name =web1 -o yaml > web1.yaml

kubectl get pods.svc

PV和PVC

PV:持久化存储,对存储资源进行抽象,对外提供可以调用的地方

PVC:用于调用,不需要关心内部实现细节

应用部署

定义pvc 绑定pv

定义pv 数据存储服务器IP 路径 存储容量匹配模式(pvc原则)

容器中的内容操作

将本地的文件arthas.tar.gz 拷贝到ae3f4bd1-aaa-num-search-685dd86457-lbdfx容器中的/home/admin/ 目录下,命名空间是bbb

kubectl --kubeconfig=kubeconfig  cp arthas.tar.gz   ae3f4bd1-aaa-num-search-685dd86457-lbdfx:/home/admin/  -n bbb

将命名空间是aaa的容器ae3f4bd1-aaa-num-search-685dd86457-lbdfx下/home/admin/app/ccc/WEB-INF/lib/ddd-SNAPSHOT.jar的jar下载到本地。
kubectl  --kubeconfig=kubeconfig  cp  aaa/ae3f4bd1-aaa-num-search-685dd86457-lbdfx:/home/admin/app/ccc/WEB-INF/lib/ddd-10.0.1-SNAPSHOT.jar   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值