04 | Kubernetes | Kubernetes实战
项目迁移流程
1、制作镜像:dockerfile、docker+jenkins持续集成
镜像分类:基础镜像,中间件镜像,项目镜像
2、控制器管理Pod:deployment(无状态)、deamonset(守护进程)、
statsfulset(有状态应用),job&cronjob(批处理)
3、Pod数据持久化:
4、service
5、对外发布应用:service nodeport,Ingress
LB -> ingress controller -> pod
制作镜像
控制器管理Pod
Deployment:无状态部署,例如Web,微服务,API
StatefulSet:有状态部署,例如数据库,ZK,ETCD
DaemonSet:守护进程部署,例如监控Agent、日志Agent
Job & CronJob:批处理,例如数据库备份,邮件通知
Pod数据持久化
容器部署过程中一般有以下三种数据:
启动时需要的初始数据,可以是配置文件
启动过程中产生的临时数据,该临时数据需要多个容器间共享
启动过程中产生的业务数据
暴露应用
使用Service ClusterIP类型暴露集群内部应用访问。
Service定义了Pod的逻辑集合和访问这个集合的策略
Service引入为了解决Pod的动态变化,提供服务发现和负载均衡
使用CoreDNS解析Service名称
发布应用
使用Ingress对外暴露你的应用。
通过Service关联Pod
基于域名访问
通过Ingress Controller实现Pod的负载均衡 - 支持TCP/UDP 4层和HTTP 7层(Nginx)
具体步骤
yum -y install git
git clone http://10.19.151.240:9999/root/java-demo.git
Username:
Password:
ls
cd java-demo
1.安装编译环境
yum -y install java-1.8.0-openjdk maven
2.编译构建
mvn clean package -DskipTests=true
3.替换maven国内源
/etc/maven/settings.xml
<mirror>
<id>central</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repospublic</url>
</mirror>
4、使用Dockerfile构建镜像并推送到镜像仓库
docker build -t 10.19.151.240/dev/java-demo:v10 .
docker login 10.19.151.240
docker push 10.19.151.240/dev/java-demo:v10
5、创建secret保存harbor认证信息
kubectl create secret docker-registry dockerpullauth --docker-username=admin --docker-password=Harbor12345 --docker-server=10.19.151.240
kubectl delete secert dockerpullauth
6、编写yaml部署(deployment、service、ingress)
kubectl create deployment java-demo --image=