部署前期
- 准备工作 与 注意事项
 - 准备基础镜像 并 推送到 镜像仓库
 - 部署php/java项目
 
准备工作
- 部署的项目情况
- 1、业务架构及服务 (dubbo、spring cloud)
 - 2、第三方服务 mysql,redis,zookeeper,eruka,mq
 - 3、服务之间怎么通信?
 - 4、资源消耗:硬件,带宽
 
 
- 部署项目时,用到的k8s资源 
- 1、namespace 不同的项目隔离 , 或者隔离不同的环境(test,prod,dev)
 - 2、无状态应用部署 (deployment)
 - 3、有状态应用部署 (statefulset,pv,pvc)
 - 4、发布项目暴露外部访问(service,ingress)
 - 5、信息存储 secret,configmap
 
 
- 准备基础镜像
 
1  | [root@k8s-node2 nfs]# docker search lizhenliang  | 
- 编排部署 
- 1、编写yaml文件
 
 
- 工作流程
- 1、kubectl -> yaml -> 镜像仓库拉取镜像 -> service(集群内部),ingresss -> 暴露给外部访问
 
 
部署 Java 应用
制作镜像
- 如果有cicd环境 自动完成 (代码拉取->代码编译构建->镜像打包->推送到镜像仓库)
 - 没有 就手动构建
 - 镜像为交付物
 
准备 pv 和 pvc
安装 nfs 服务
- 选定 172.17.70.254 作为 nfs 服务端
 
1  | # 安装 nfs 所有node都需要安装  | 
1  | # 配置共享目录  | 
1  | # 如过遇到nfs无法启动的检查步骤  | 
基于nfs 配置 PV 动态供给
1  | # 上传nfs-client 修改IP地址为nfs服务端地址  | 
1  | # 创建  | 
1  | [root@k8s-master1 nfs-client]# cat class.yaml  | 
1  | [root@k8s-master1 nfs-client]# cat deployment.yaml  | 
部署 harbor仓库
1  | # 该主机也需要二进制安装docker  | 
1  | [root@k8s-master2 src]# mkdir -p /etc/docker  | 
1  | [root@k8s-node1 src]# systemctl start docker  | 
1  | # 上传文件  | 
1  | # 部署 compose  | 
1  | # 部署 harbor  | 
免https使用
1  | [root@Docker harbor]# vim /etc/docker/daemon.json  | 
登录
1  | # 两个node节点都先登录下 好下载基础镜像  | 
下载 pod基础镜像 并上传到私有仓库
1  | [root@k8s-master2 opt]# docker pull lizhenliang/pause-amd64:3.0  | 
构建基础镜像
- nginx
 - php
 - tomcat
 
构建项目镜像
安装Git
1  | [root@k8s-node3 opt]# yum install git  | 
下载项目
1  | [root@k8s-node3 opt]# cd /opt/  | 
编译源码
1  | # 安装 jdk 和 maven 环境  | 

构建项目镜像
1  | # 引用了老师的tomcat镜像运行环境  | 
1  | # 构建镜像  | 
无状态部署 tomcat
- tomcat 
- deployment
 - service
 - ingress
 - namespace # 逻辑项目隔离
 
 
创建 命名空间
1  | [root@k8s-master1 java-demo]# vim namespace.yaml  | 
1  | [root@k8s-master1 java-demo]# kubectl apply -f namespace.yaml  | 
部署 deployment
1  | # registry-pull-secret 创建仓库凭证  | 
1  | [root@k8s-master1 templates]# vim /opt/java-demo/deployment.yaml  | 
1  | # 创建启动  | 
项目发布 service
1  | [root@k8s-master1 java-demo]# vim service.yaml  | 
1  | # 创建并测试  | 
暴露项目 Ingress
1  | [root@k8s-master1 java-demo]# vim ingress.yaml  | 
1  | [root@k8s-master1 java-demo]# kubectl apply -f ingress.yaml  | 
测试访问
1  | [root@k8s-master1 java-demo]# cat /etc/hosts  | 

有状态部署 mysql
- mysql
- statefulset
 - Headless Service (dns绑定)
 - pv,pvc (stotageclass pv自动供给)
 
 
1  | # Headless Service  | 
1  | [root@k8s-master1 java-demo]# vim mysql.yaml  | 
1  | # 创建并测试  | 
1  | # 登录测试  | 
导入数据
1  | # copy文件  | 



修改代码 数据库连接地址
1  | # 修改源码 然后重新打包镜像  | 



部署 PHP 项目
- 项目源码地址
 
1  | https://github.com/lizhenliang/php-demo  | 
拉取项目源码
1  | # 拉取项目源码  | 
数据库配置
1  | # 共用之前java创建的mysql数据库  | 
1  | [root@k8s-node3 php-demo]# vim /opt/php-demo/wp-config.php  | 
创建镜像
1  | # 创建镜像  | 
1  | # 推送镜像到镜像仓库  | 

创建命名空间
1  | [root@k8s-master1 php-demo]# vim namespace.yaml  | 
创建仓库凭证
1  | [root@k8s-master1 php-demo]# kubectl create secret docker-registry registry-pull-secret --docker-username=admin --docker-password=lx@68328153 --docker-email=253911339@qq.com --docker-server=172.17.70.252 -n test  | 
创建 deployment
1  | [root@k8s-master1 php-demo]# vim deployment.yaml  | 
1  | [root@k8s-master1 php-demo]# kubectl get pods -n test  | 
创建 service
1  | [root@k8s-master1 php-demo]# vim service.yaml  | 
1  | [root@k8s-master1 php-demo]# kubectl apply -f service.yaml  | 
1  | # 创建 ingress  | 
1  | [root@k8s-master1 php-demo]# kubectl apply -f ingress.yaml  | 
创建 mysql 有状态应用
1  | [root@k8s-master1 php-demo]# vim mysql.yaml  | 
1  | [root@k8s-master1 php-demo]# kubectl apply -f mysql.yaml  | 
测试域名访问
1  | # 阿里云还没有屏蔽签测试域名  | 





