
在这个实验中,我们需要用到一下几个yaml文件(除开endpointslice和recommend?)

大致的架构图如下:

1.创建pvc
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: myclaim1
namespace: dev
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
storageClassName: nginx1
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: myclaim2
namespace: dev
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
storageClassName: nginx2
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: myclaim3
namespace: dev
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
storageClassName: nginx3
2.创建pv,与pvc进行绑定
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv1
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteMany
storageClassName: nginx1
persistentVolumeReclaimPolicy: Retain
nfs:
server: 192.168.239.100
path: /root/data/pv1
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv2
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteMany
storageClassName: nginx2
persistentVolumeReclaimPolicy: Retain
nfs:
server: 192.168.239.100
path: /root/data/pv2
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv3
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteMany
storageClassName: nginx3
persistentVolumeReclaimPolicy: Retain
nfs:
server: 192.168.239.100
path: /root/data/pv3
3.创建deployment和service,其实在昨天学到了可以管理有状态的statefulset控制器,它可以让个Pod都附加到其自己的持久化存储卷,而不像是deployment一样共享一个存储卷哈哈哈
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment1
namespace: dev
spec:
replicas: 1
selector:
matchLabels:
app: nginx-pod
template:
metadata:
labels:
app: nginx-pod
spec:
nodeName: node1
containers:
- name: nginx
image: nginx:1.17.1
ports:
- containerPort: 80
volumeMounts:
- name: config
mountPath: /usr/share/nginx/html/
readOnly: false
- name: myclaim1
mountPath: /var/log/nginx/
readOnly: false
volumes:
- name: config
configMap:
name: configmap
- name: myclaim1
persistentVolumeClaim:
claimName: myclaim1
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment2
namespace: dev
spec:
replicas: 1
selector:
matchLabels:
app: nginx-pod
template:
metadata:
labels:
app: nginx-pod
spec:
nodeName: node2
containers:
- name: nginx
image: nginx:1.17.1
ports:
- containerPort: 80
volumeMounts:
- name: config
mountPath: /usr/share/nginx/html/
readOnly: false
- name: myclaim2
mountPath: /var/log/nginx/
readOnly: false
volumes:
- name: config
configMap:
name: configmap
- name: myclaim2
persistentVolumeClaim:
claimName: myclaim2
---
apiVersion: v1
kind: Service
metadata:
name: nginx-service
namespace: dev
spec:
selector:
app: nginx-pod
clusterIP: None
type: ClusterIP
ports:
- port: 80
targetPort: 80
4. 创建ingress,ingress可看作7层的负载均衡器,用于将来自集群外部的HTTP和HTTPS流量路由到集群内的特定服务。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-http
namespace: dev
spec:
rules:
- host: nginx-http
http:
paths:
- path: /
backend:
serviceName: nginx-service
servicePort: 80
5.创建configmap,导入前端文件(主要功能还是自定义配置文件,我只是测试来玩一下啦)
apiVersion: v1
kind: ConfigMap
metadata:
name: configmap
namespace: dev
data:
index.html: |
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<div style="font-size: 30px; font-weight: bold; font-style: italic; color: blue; background-color: cyan; padding: 10px; border: 2px solid blue; border-radius: 10px;" align="center">
新用户注册 <br><br>
<form name="form1" id="form1">
用户名 <input name="userName" id="userName" type="text" value="请输入用户名" maxlength="12">
<br>密码 <input name="pwd" id="pwd" type="password" maxlength="12" placeholder="请输入密码">
<br>重复密码 <input name="pwd" id="pwd" type="password" maxlength="12" placeholder="重复密码">
<br>性别 ><input name="sex" id="sexm" type="radio" value="1" >男
<input name="sex" id="sexw" type="radio" value="0" checked="fucker">女
<br>出生日期 <input type="date" name="birth" id="birth">
<br>手机号码 <input name="fav" id="fav1" type="tel" maxlength="12">
<br>邮件 <input name="fav" id="fav2" type="email">
<br>爱好 <input name="fav" id="fav3" type="checkbox" checked="fucker"><input type="checkbox" checked="fucker"><input type="checkbox" checked="fucker">
<br>学历 <select name="gra" id="gra">
<option value="">博士</option> <option value="" selected="set">学士</option><option value="">硕士</option><option value="">博士</option> <option value="" selected="set">小学</option><option value="">幼儿园</option>
</select>
<select name="pri" id="pri">
<br>家庭地址 <br>省份 <select name="" id="">
<option value="">四川省</option> <option value="">河北省</option> <option value="">河南省</option>
<option value="">江西省</option>
</select>
市 <select name="" id="">
<option value="">成都市</option><option value="">自贡市</option><option value="">德阳市</option><option value="">巴中市</option>
</select>
</select>
<input type="reset">
</form>
</div>
</body>
</html>
6.部署dashboard,监控集群
详情看部署和访问 Kubernetes 仪表板(Dashboard) | Kubernetes