介绍

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到页面登陆

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐