k8s使用数据卷 configMap
介绍PersistentVolume(PV)是集群中已由管理员配置的一段网络存储。 集群中的资源就像一个节点是一个集群资源。 PV是诸如卷之类的卷插件,但是具有独立于使用PV的任何单个pod的生命周期。 该API对象捕获存储的实现细节,即NFS,iSCSI或云提供商特定的存储系统。PersistentVolumeClaim(PVC)是用户存储的请求。 它类似于pod。Pod消耗节点资源,PVC..
·
介绍
PersistentVolume(PV)是集群中已由管理员配置的一段网络存储。 集群中的资源就像一个节点是一个集群资源。 PV是诸如卷之类的卷插件,但是具有独立于使用PV的任何单个pod的生命周期。 该API对象捕获存储的实现细节,即NFS,iSCSI或云提供商特定的存储系统。
PersistentVolumeClaim(PVC)是用户存储的请求。 它类似于pod。Pod消耗节点资源,PVC消耗存储资源。 pod可以请求特定级别的资源(CPU和内存)。 权限要求可以请求特定的大小和访问模式。
首先在volumes目录下创建nfs-pv-mysql.yml
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-pv-mysql
spec:
#设置容量
capacity:
storage: 5Gi
#访问模式
accessModes:
#该卷能够以读写模式被多个节点同时加载
- ReadWriteMany
#回收策略 这里是基础擦除 'rm -rf/thevolume/*'
persistentVolumeReclaimPolicy: Recycle
nfs:
# NFS 服务端配置的路径
path: "/usr/local/kubernetes/volumes"
#NFS 服务端地址
server: 192.168.113.80
readOnly: false
接着开始运行
kubectl apply -f nfs-pv-mysql.yml
查看
kubectl get pv
接着创建 nfs-pv-mysql-myshop.yml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs-pvc-mysql-myshop
spec:
accessModes:
#需要使用和 PV 一致的访问模式
- ReadWriteMany
# 按需分配资源
resources:
requests:
storage: 1Gi
接着开始运行
kubectl apply -f nfs-pv-mysql-myshop.yml
查看
kubectl get pvc
注意: 首先要确保在所有node节点都安装了NFS客户端
接着在service文件里创建 mysql.yml
apiVersion: v1
kind: ConfigMap
metadata:
name: mysql-myshop-config
data:
# 这里是键值对数据
mysqld.cnf: |
[client]
port=3306
[mysql]
no-auto-rehash
[mysqld]
skip-host-cache
skip-name-resolve
default-authentication-plugin=mysql_native_password
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
explicit_defaults_for_timestamp=true
lower_case_table_names=1
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: mysql-myshop
spec:
replicas: 1
template:
metadata:
labels:
name: mysql-myshop
spec:
containers:
- name: mysql-myshop
image: mysql:8.0.16
imagePullPolicy: IfNotPresent
ports:
- containerPort: 3306
env:
- name: MYSQL_ROOT_PASSWORD
value: "123456"
volumeMounts:
# 以数据卷的形式挂载 MySQL 配置文件目录
- name: cm-vol-myshop
mountPath: /etc/mysql/conf.d
- name: nfs-vol-myshop
mountPath: /var/lib/mysql
volumes:
# 将 ConfigMap 中的内容以文件形式挂载进数据卷
- name: cm-vol-myshop
configMap:
name: mysql-myshop-config
items:
# ConfigMap 中的 Key
- key: mysqld.cnf
# ConfigMap Key 匹配的 Value 写入名为 mysqld.cnf 的文件中
path: mysqld.cnf
- name: nfs-vol-myshop
persistentVolumeClaim:
claimName: nfs-pvc-mysql-myshop
---
apiVersion: v1
kind: Service
metadata:
name: mysql-myshop
spec:
ports:
- port: 3306
targetPort: 3306
nodePort: 32036
type: LoadBalancer
selector:
name: mysql-myshop
启动服务
kubectl apply -f mysql.yml
然后查看服务是否启动
kubectl get cm
kubectl describe cm mysql-myshop-config
查看部署位置 查看端口
kubectl get pods -o wide
kubectl get service
外部连接即可
kubernetes Dashboard
关于其版本的详细信息可以去 GitHub 观看
首先下载配置文件(注意版本对应问题)
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta3/aio/deploy/recommended.yamlh
修改配置文件
修改成
启动服务
kubectl apply -f recommended.yaml
查看
kubectl get service -n kubernetes-dashboard
#查看存储空间
kubectl get service --all-namespaces
kubectl get deployment--all-namespaces
#查看部署位置
kubectl get pods -n kubernetes-dashboard -o wide
火狐浏览器打开时会出现验证
登陆
我们采用Token 方式登陆
创建账号 创建名为 dashboard-adminuser.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin-user
namespace: kubernetes-dashboard
启动服务
kubectl apply -f dashboard-adminuser.yaml
打印密码
kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')
复制token到页面登陆
更多推荐
已为社区贡献3条内容
所有评论(0)