准备工作与注意事项

参考文档:https://github.com/lizhenliang

一、部署的项目情况
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、项目构建(java)。CI/CD环境这个阶段自动完成(代码拉取->代码编译构建->镜像打包->推送到镜像仓库)。
2、编写yaml文件,使用这个镜像
1)deployment部署web
2)statefulset部署mysql
3)镜像认证拉取secret
4)service & ingress

五、工作流程

kubectl -> yaml -> 镜像仓库拉取镜像 -> Service(集群内部访问)/Ingress 暴露给外部用户

以下是php-demo
1、登录到node任意一个节点上(node:192.168.1.23),下载php实验代码,然后再将她推到镜像仓库(harbor)

git clone https://github.com/lizhenliang/php-demo

2、mysql 独立出来,不在pod中,在192.168.1.25上安装mariadb
1)yum -y install mariadb mariadb-server && systemctl start mariadb
2)mysql_secure_installation 设置密码 123456
3)create database wordpress; #新建数据库
4)grant all on . to 'root'@'%' identified by '123456'; #开放root访问权限

3、更改配置php-demo/wp-config.php 中的数据库连接信息

4、以下的意思就是1、获取 lizhenliang/nginx-php:latest 这个镜像。2、作者信息:jacker 3、把当前的代码添加到镜像的/usr/local/nginx/html这个里面

《四》公司项目部署到Kubernetes平台

[root@docker php-demo]# vi Dockerfile
FROM lizhenliang/nginx-php:latest
MAINTAINER jacker
ADD . /usr/local/nginx/html

5、开始构建镜像(.:默认就是dockerfile文件)

先要登录到harbor上,才有权限
docker login 192.168.1.25

[root@docker php-demo]# docker build -t 192.168.1.25/project/php-demo .

6、开始推到harbor上
docker push 192.168.1.25/project/php-demo

7、登录harbor 192.168.1.25查看

8、现在到主节点上创建pod
1)在master上要有权限拉取镜像,方法如下:https://blog.csdn.net/xukangkang1hao/article/details/80839834
获取如下:
《四》公司项目部署到Kubernetes平台_第1张图片

2)创建命名空间
kubectl apply -f namespace.yaml
3)创建拉取镜像权限的秘钥
kubectl apply -f registry-pull-secret.yaml
4)创建service来暴露端口服务
kubectl apply -f service.yaml
5)创建ingress来让域名访问,ingress关联到的是servicename
kubectl apply -f ingress.yaml
6 ) 创建deployment
kubectl apply -f deployment.yaml

设置好标签,为了可以回滚
《四》公司项目部署到Kubernetes平台_第2张图片

验证:
《四》公司项目部署到Kubernetes平台

域名绑定到任意一个节点上:
《四》公司项目部署到Kubernetes平台_第3张图片

访问:http://php.ctnrs.com/ 验证