基于K8S实现企业常用项目架构(项目部署篇)
发布时间:2018-12-01 16:12:19分类:Linux运维阅读:1366
七、使用helm部署redis高可用集群
八、部署tomcat应用
九、使用Ingress-nginx作为集群入口代理tomcat
七、使用helm部署redis高可用集群
redis高可用集群清单文件参考:https://hub.kubeapps.com/charts/stable/redis-ha
1、搜索redis的chart,并拉取redis-ha到本地
[root@k8s-master manifests]# pwd
/opt/manifests
[root@k8s-master manifests]# helm search redis-ha
![]()
[root@k8s-master manifests]# helm fetch stable/redis-ha
[root@k8s-master manifests]# tar -xf redis-ha-3.0.1.tgz
[root@k8s-master manifests]# cd redis-ha/
[root@k8s-master redis-ha]# pwd
/opt/manifests/redis-ha
2、修改模板参数值文件values.yaml,指定pv卷大小为5Gi,以适用之前创建的pv
[root@k8s-master redis-ha]# vim values.yaml

3、确认chart配置是否正确
[root@k8s-master manifests]# helm lint redis-ha

4、使用helm从本地的chart安装redis-ha高可用集群
[root@k8s-master manifests]# helm install --name cache redis-ha

5、列出使用helm安装的实例
[root@k8s-master manifests]# helm list
八、部署tomcat应用
1、创建清单文件,用于构建Deployment和Service资源
[root@k8s-master manifests]# pwd
/opt/manifests
[root@k8s-master manifests]# vim web-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: web
labels:
app: tomcat
release: 1.0.0
proj: web-demo
spec:
replicas: 2
selector:
matchLabels:
app: tomcat
release: 1.0.0
template:
metadata:
labels:
app: tomcat
release: 1.0.0
spec:
containers:
- name: tomcat-app
image: xdao07/spring-session-demo:latest
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
livenessProbe:
exec:
command:
- cat
- /usr/local/tomcat/webapps/app/index.jsp
initialDelaySeconds: 15
periodSeconds: 20
resources:
requests:
cpu: 100m
memory: 128Mi
requests:
cpu: 200m
memory: 256Mi
---
apiVersion: v1
kind: Service
metadata:
name: web
labels:
app: service
release: 1.0.0
proj: web-demo
spec:
type: NodePort
ports:
- port: 80
targetPort: 8080
protocol: TCP
name: tomcat
selector:
app: tomcat
release: 1.0.0
2、执行清单文件,创建Deployment和Service资源
[root@k8s-master manifests]# kubectl apply -f web-deployment.yaml
3、查看之前清单创建的资源,通过标签过滤相关的资源
[root@k8s-master manifests]# kubectl get all -l proj=web-demo -o wide

4、通过Service代理访问tomcat服务,返回Pod主机名及IP和SeesionId等信息
[root@k8s-master manifests]# curl http://10.107.247.96/app/
九、使用Ingress-nginx作为集群入口代理tomcat
1、创建ingress清单,代理指定service代表的Pod资源(tomcat)
[root@k8s-master ingress]# pwd
/opt/manifests/ingress
[root@k8s-master ingress]# vim web-ingress.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: web-ingress
namespace: default
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/load-balance: "round_robin"
spec:
rules:
- host: myweb.example.com
http:
paths:
- backend:
serviceName: web
servicePort: 80
path:
2、执行清单,创建ingress-nginx代理
[root@k8s-master ingress]# kubectl apply -f web-ingress.yaml
ingress.extensions/web-ingress created
3、查看ingress资源及其详细信息
[root@k8s-master ingress]# kubectl get ingress
[root@k8s-master ingress]# kubectl describe ingress web-ingress
4、在浏览器中通过域名myweb.example.com访问,将轮询后端的tomcat服务
[root@k8s-master ingress]# kubectl get svc -n ingress-nginx
(1)在hosts文件中添加域名解析到k8s集群的nodeIP

(2)通过域名加端口号访问,在浏览器地址栏回车刷新会轮询后面主机,但是sessionId不会变化,实现session共享

相关文章: