Ingress 和 Ingress Controller 总结
vim nginx-ingress-controller-rbac.yml
yml 文件可以在 github 上搜索
vim default-backend.yaml
注意这里的 nodeName
vim nginx-ingress-controller.yaml
更新文件
kubectl apply -f nginx-ingress-controller-rbac.yml
kubectl apply -f default-backend.yaml
kubectl apply -f nginx-ingress-controller.yaml
kubectl get po -n kube-system
测试 Ingress HTTP 代理 tomcat
vim ingress-demo.yaml
修改物理机本地的 host 文件,增加如下一行,下面的 ip 是 k8s 的 k8s-01 节点 ip
192.168.2.20 tomcat.lucky.com
浏览器访问 tomcat.lucky.com,出现如下:
把上面资源清单文件删除,防止干扰后面的实验
kubectl delete -f ingress-myapp.yaml
测试 Ingress HTTPS 代理 tomcat
1、构建 TLS 站点
(1)准备证书,在控制节点操作
openssl genrsa -out tls.key 2048
openssl req -new -x509 -key tls.key -out tls.crt -subj /C=CN/ST=Beijing/L=Beijing/O=DevOps/CN=tomcat.lucky.com
(2)生成 secret,在控制节点操作
kubectl create secret tls tomcat-ingress-secret --cert=tls.crt --key=tls.key
(3)查看 secret
kubectl get secret
显示如下:
(4)查看 tomcat-ingress-secret 详细信息
kubectl describe secret tomcat-ingress-secret
创建 Ingress
Ingress 规则可以参考官方:
https://kubernetes.io/zh/docs/concepts/services-networking/ingress/
kubectl explain ingress.spec.rules.http.paths.backend.service
vim ingress-tomcat-tls.yaml
删除 ingress 资源
kubectl delete -f ingress-tomcat-tls.yaml
安装 harbor 请参考拙作
创建 docker 私有化仓库_高飞的博客-CSDN博客
安装和配置数据存储仓库 MySQL
yum install mysql* -y
yum install mariadb* -y
启动 MySQL
systemctl enable mariadb.service --now
安装成功后,默认的 root 用户密码为空,你可以使用以下命令来创建 root 用户的密码,密码设置成 111111
mysqladmin -u root password "111111"
登陆数据库
mysql -uroot -p111111
创建数据库 tb_order、tb_product、tb_stock
mysql> create database tb_product;
mysql> create database tb_stock;
mysql> create database tb_order;
mysql> use tb_order
mysql> source /root/order.sql
mysql> use tb_stock
mysql> source /root/stock.sql
mysql> use tb_product
mysql> source /root/product.sql
mysql> grant all on *.* to 'root'@'10.244.%.%' identified by '111111';
mysql> grant all on *.* to 'root'@'192.168.%.%' identified by '111111';
mysql> grant all on *.* to 'root'@'%' identified by '111111';
mysql> flush privileges;
mysql> exit
为什么要将 SpringCloud 项目迁移到 K8S 平台?
SpringCloud 只能用在 SpringBoot 的 java 环境中,而 kubernetes 可以适用于任何开发语言,只要能被放进 docker 的应用,都可以在 kubernetes 上运行,而且更轻量,更简单。
每个微服务可以部署多个,没有多少依赖,并且有负载均衡能力,比如一个服务部署一个副本或 5 个副本,通过 k8s 可以更好的去扩展我们的应用。
SpringCloud 很多功能都跟 kubernetes 重合,比如服务发现,负载均衡,配置管理,所以如果把SpringCloud 部署到 k8s,那么很多功能可以直接使用 k8s 原生的,减少复杂度。
SpringCloud 容易上手,是对开发者比较友好的平台;Kubernetes 是可以实现 DevOps 流程的,SpringCloud 和 kubernetes 各有优点,只有结合起来,才能发挥更大的作用,达到最佳的效果。
Xmind
Visio
https://www.processon.com
部署 SpringCloud 框架的电商项目:在线购物平台
安装 openjdk 和 maven
在 k8s 控制节点上操作
yum install java-1.8.0-openjdk maven-3.0.5* -y- 修改源代码,更改数据库连接地址
vim /root/microservic-test/stock-service/stock-service-biz/src/main/resources/application-fat.yml 修改产品服务 product 的数据库连接地址
vim /root/microservic-test/product-service/product-service-biz/src/main/resources/application-fat.yml 修改订单数据库
vim /root/microservic-test/order-service/order-service-biz/src/main/resources/application-fat.yml 通过 Maven 编译、构建、打包源代码
在 k8s 控制节点上操作
修改源代码数据库的地址之后回到/root/microservic-test 目录下执行如下命令:
cd microservic-test
mvn clean package -D maven.test.skip=true
清理缓存 /root/.m2/repository
编译完成大概需要 15-20 分钟,看到如下说明编译打包已经成功了:
在 k8s 中部署 Eureka 组件
修改 k8s 的控制节点和工作节点的上的 docker 的配置文件:
cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors":["https://hxn0tro1.mirror.aliyuncs.com","https://registry.dockercn.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","http://hubmirror.c.163.com"],
"exec-opts": ["native.cgroupdriver=systemd"],
"insecure-registries":["192.168.2.50","harbor"]
}
EOF
注意:
daemon.json 中新增加了如下一行内容:
"insecure-registries":["192.168.2.50","harbor"],
这样才可以使用 harbor 私有镜像仓库- 重启 docker 使配置生效
systemctl daemon-reload && systemctl restart docker && systemctl status docker --no-pager创建拉取私有镜像仓库需要的 secret
kubectl create ns ms && kubectl create secret docker-registry registry-pull-secret --docker-server=192.168.2.50 --docker-username=admin --docker-password=Harbor12345 -n ms在 harbor 上创建一个项目 microservice
构建镜像
cd /root/microservic-test/eureka-servicedocker build -t 192.168.2.50/microservice/eureka:v1 .
docker login harbor
docker push 192.168.2.50/microservice/eureka:v12)部署服务
cd /root/microservic-test/k8s
修改 eureka.yaml 文件,把镜像变成 image: 192.168.2.50/microservice/eureka:v13)更新 yaml 文件
kubectl apply -f eureka.yaml上面运行没问题之后,在物理机的 hosts 文件,新加如下一行:
192.168.2.20 eureka.ctnrs.com
在浏览器访问 eureka.ctnrs.com 即可,可看到如下,说明 eureka 部署成功了:在 k8s 中部署网关 Gateway 服务
- 1)构建镜像
cd /root/microservic-test/gateway-service/
docker build -t 192.168.2.50/microservice/gateway:v1 .
docker push 192.168.2.50/microservice/gateway:v1 2)部署服务
cd /root/microservic-test/k8s
修改 gateway.yaml 文件,把镜像变成 image: 192.168.2.50/microservice/gateway:v1
3)更新 yaml 文件
kubectl apply -f gateway.yaml
4)查看 pod 状态
kubectl get pods -n ms 6)配置 hosts 文件
gateway 的域名是 gateway.ctnrs.com,需要在物理机找到 hosts 文件,再增加一行如下:
192.168.2.20 gateway.ctnrs.com
在浏览器访问 eureka.ctnrs.com
可看到 GATEWAY-SERVICE 已经注册到 eureka 了:
- 在 k8s 中部署前端 portal 服务
1)构建镜像
cd /root/microservic-test/portal-service
docker build -t 192.168.2.50/microservice/portal:v1 .
docker push 192.168.2.50/microservice/portal:v1 2)部署服务
cd /root/microservic-test/k8s
修改 portal.yaml 文件,把镜像变成 image: 192.168.2.50/microservice/portal:v1 3)更新 yaml 文件
kubectl apply -f portal.yaml
4)查看 pod 状态
kubectl get pods -n ms 在物理机的 hosts 文件中,再增加一行如下内容:
192.168.2.20 portal.ctnrs.com
6)查看 portal 是否注册到 eureka 中
在浏览器访问 eureka.ctnrs.com 可看到 portal 服务已经注册到 eureka 了
7)访问前端页面
在浏览器访问 portal.ctnrs.com
- 在 k8s 中部署订单 order 服务
1)构建镜像
cd /root/microservic-test/order-service/order-service-biz
docker build -t 192.168.2.50/microservice/order:v1 .
docker push 192.168.2.50/microservice/order:v1
2)部署服务
cd /root/microservic-test/k8s
修改 order.yaml 文件,把镜像变成 image: 192.168.2.50/microservice/order:v1 3)更新 yaml 文件
kubectl apply -f order.yaml
4)查看 pod 状态
kubectl get pods -n ms
网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。
加入交流群
请使用微信扫一扫!