k8s-基于NFS实现动静分离

网友投稿 286 2022-09-11

k8s-基于NFS实现动静分离

存储卷类型及使用:​​的容器中进行相应的操作。

1.NFS 服务器环境准备

apt-get install nfs-servermkdir /data/linux36 -p #数据总目录mkdir /data/linux36/images #图片目录mkdir /data/linux36/static #静态文件目录vim /etc/exports-----------------------------------/data/linux36 *(rw,no_root_squash)-----------------------------------systemctl restart nfs-server或exportfs -arvshowmount -e 192.168.47.50mount -t nfs 192.168.47.50:/data/linux36 /mntcp /etc/passwd /mnt/ #必须能够写入数据

2.nginx 业务容器yaml

nginx.yaml

kind: DeploymentapiVersion: extensions/v1beta1metadata: labels: app: linux36-nginx-deployment-label name: linux36-nginx-deployment namespace: linux36spec: replicas: 1 selector: matchLabels: app: linux36-nginx-selector template: metadata: labels: app: linux36-nginx-selector spec: containers: - name: linux36-nginx-container image: harbor.gesila.com/k8s/nginx-web1:v1 #command: ["/apps/tomcat/bin/run_tomcat.sh"] #imagePullPolicy: IfNotPresent imagePullPolicy: Always ports: - containerPort: 80 protocol: TCP name: - containerPort: 443 protocol: TCP name: env: - name: "password" value: "123456" - name: "age" value: "18" resources: limits: cpu: 2 memory: 2Gi requests: cpu: 500m memory: 1Gi volumeMounts: - name: linux36-images mountPath: /usr/local/nginx/html/webapp/images readOnly: false - name: linux36-static mountPath: /usr/local/nginx/html/webapp/static readOnly: false volumes: - name: linux36-images nfs: server: 192.168.47.50 path: /data/linux36/images - name: linux36-static nfs: server: 192.168.47.50 path: /data/linux36/static---kind: ServiceapiVersion: v1metadata: labels: app: linux36-nginx-service-label name: linux36-nginx-service namespace: linux36spec: type: NodePort ports: - name: port: 80 protocol: TCP targetPort: 80 nodePort: 30002 - name: port: 443 protocol: TCP targetPort: 443 nodePort: 30443 selector: app: linux36-nginx-selector

2.1.执行更新yaml文件

注意:这里启动的时候,需要先启动tomcat,因为Nginx会去找后端服务器

root@k8s-master:~/images/k8s-tomcat/nfs-nginx-tomcat# kubectl apply -f nginx.yamldeployment.extensions/linux36-nginx-deployment configuredservice/linux36-nginx-service unchanged

3.tomcat业务pod更新挂载

tomcat.yaml

kind: DeploymentapiVersion: extensions/v1beta1metadata: labels: app: linux36-tomcat-app1-deployment-label name: linux36-tomcat-app1-deployment namespace: linux36spec: replicas: 1 selector: matchLabels: app: linux36-tomcat-app1-selector template: metadata: labels: app: linux36-tomcat-app1-selector spec: containers: - name: linux36-tomcat-app1-container image: harbor.gesila.com/k8s/tomcat-app1:v1 #command: ["/apps/tomcat/bin/run_tomcat.sh"] #imagePullPolicy: IfNotPresent imagePullPolicy: Always ports: - containerPort: 8080 protocol: TCP name: env: - name: "password" value: "123456" - name: "age" value: "18" resources: limits: cpu: 2 memory: "2048Mi" requests: cpu: 500m memory: "1024Mi" volumeMounts: - name: linux36-images mountPath: /data/tomcat/webapps/myapp/images readOnly: false - name: linux36-static mountPath: /data/tomcat/webapps/myapp/static readOnly: false volumes: - name: linux36-images nfs: server: 192.168.47.50 path: /data/linux36/images - name: linux36-static nfs: server: 192.168.47.50 path: /data/linux36/static #nodeSelector: #位置在当前containers参数结束后的部分 # project: linux36 #指定的label标签 ---kind: ServiceapiVersion: v1metadata: labels: app: linux36-tomcat-app1-service-label name: linux36-tomcat-app1-service namespace: linux36spec: type: NodePort ports: - name: port: 80 protocol: TCP targetPort: 8080 nodePort: 30003 selector: app: linux36-tomcat-app1-selector

3.1.执行更新tomcat app1业务容器yaml

kubectl apply -f tomcat.yaml

4.pod中验证NFS挂载

kubectl get pod -n linux36 -o widekubectl exec -it linux36-nginx-deployment-6d858d49d-2l6pd bash -n linux36kubectl exec -it linux36-tomcat-app1-deployment-74c7768479-877fm bash -n linux36

5.访问web测试

5.1.手动往NFS目录分别上传图片和html文件,测试访问

root@k8s-etcd1:/data/linux36# tree.├── images│ └── 1.jpg├── passwd└── static └── index.html2 directories, 3 files

5.2.访问nginx 业务pod

get service --all-namespaces -o widekubectl get pods --all-namespaces -o widekubectl get nodes --all-namespaces -o widekubectl get deployment --all-namespaceskubectl get deployment -n linux35 -o wide #更改显示格式kubectl describe pods linux35-tomcat-app1-deployment -n linux35 #查看某个资源详细信息kubectl create -f tomcat-app1.yamlkubectl create -f tomcat-app1.yaml --save-config --recordkubectl delete -f tomcat-app1.yamlkubectl apply -f tomcat-app1.yamlkubectl apply -f tomcat-app1.yaml --record #推荐命令kubectl exec -it linux35-tomcat-app1-deployment-6bccd8f9c7-g76s5 bash -n linux35kubectl logs linux35-tomcat-app1-deployment-6bccd8f9c7-g76s5 -n linux35kubectl delete pods linux35-tomcat-app1-deployment-6bccd8f9c7-g76s5 -n linux35

k8s官方文档参考:​​http://docs.kubernetes.org.cn/​​

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【运维面试】k8s的监控指标
下一篇:优秀的营销模式一定要是好的表达!
相关文章

 发表评论

暂时没有评论,来抢沙发吧~