K8Sストレージボリューム

1.emptyDirのストレージボリューム

apiVersion: v1
kind: Pod
metadata:
  name: cunchujuan
spec:
  containers:
  - name: myapp
  #定义第一容器用于显示index.html文件内容
    image: ikubernetes/myapp:v1
    imagePullPolicy: IfNotPresent
    volumeMounts:
    #调用存储卷
    - name: html
     #使用存储卷的名称要和下面定义的一样
      mountPath: /usr/share/nginx/html/
     #在容器内部挂载的路径
  - name: busybox
  #定义第二个容器用于产生index.html内容
    image: busybox:latest
    imagePullPolicy: IfNotPresent
    volumeMounts:
    - name: html
      mountPath: /data/
    command: ['/bin/sh','-c','while true;do echo $(date) >> /data/index.html;sleep 2;done']
    #该命令会不停向,存储卷的index.html文件追加时间
  volumes:
  #定义存储卷
  - name: html
  #定义存储卷名称  
    emptyDir: {}
    #定义存储卷类型

K8Sストレージボリューム
同じ2つの容器が装着されているため、第二の容器は、ストレージボリュームのうち、ストレージ・ボリュームにindex.htmlを入力日付である上記において、我々は、index.htmlを第1の容器を二つの容器を画定します第二共有されているが、保持カールは一定の成長にindex.htmlを見ることができます

2.hostPathのストレージボリューム

apiVersion: v1
kind: Pod
metadata:
  name: cs-hostpath
spec:
  containers:
  - name: myapp
    image: ikubernetes/myapp:v1
    imagePullPolicy: IfNotPresent
    volumeMounts:
    - name: html
      mountPath: /usr/share/nginx/html/
  volumes:
  - name: html
    hostPath:
        #存储卷类型为 hostPath
      path: /data/hostpath
            #实际node节点上的路径
      type: DirectoryOrCreate

K8Sストレージボリューム
ノードスケジューリング、上cs27ノードにここスケジューリングにそのノードを見
cs27ノード上のフォルダを作成します。mkdir /データ/ホストパス/ -pv#ホストパスストレージボリューム
エコー「ホストパスストレージボリュームテスト」> /データ/ホストパス/ index.htmlを#ストレージボリュームのページファイルを生成し
K8Sストレージボリューム
たファイルの内容は、上記生成された参照して、それを訪問カール、私たちは
ここに、コンテナに注意し、その中にデータを変更し、それがホストパスのストレージボリュームに同期するとハングアップします負荷のように

共有ストレージボリュームを3.nfs

ホストサーバーは、NFSとして機能検索
データ#NFSフォルダを作成するには、mkdir
エコー「NFSテスト」>のindex.html#テスト用HTMLファイルを作成
yumをインストール-yのnfs-utilsの#NFSインストールしたソフトウェア
のvimの/ etc / exportsの#NFS変更の設定ファイルを
/データ/ 192.168.0.0/24(rw,no_root_squash)
構成ファイルパスプラス株互いのネットワークセグメント

各ノードのノードは、yumを、それ以外の場合は、ドライブをマウントしていないことは不可能である、-yのnfs-utilsのをインストールし、インストール
K8Sストレージボリューム
実行中の#をshowmountは-e 50.1.1.111ノードのノード特権がマウントかどうかを確認するには
-f nfs.yamlの#ロードを適用kubectlコンテナリソースは
K8Sストレージボリューム
、HTML以前のNFSサーバーのテストファイルで作成されていないかを確認するために、次のIP、カールの訪問を表示します

PVおよびPVCを使用して4.NFS

導入の4.1 PV定義された方法

[root@k8s-master ~]# kubectl explain pv    #查看pv的定义方式
FIELDS:
    apiVersion
    kind
    metadata
    spec
[root@k8s-master ~]# kubectl explain pv.spec    #查看pv定义的规格
spec:
  nfs(定义存储类型)
    path(定义挂载卷路径)
    server(定义服务器名称)
  accessModes(定义访问模型,有以下三种访问模型,以列表的方式存在,也就是说可以定义多个访问模式)
    ReadWriteOnce(RWO)  单节点读写
    ReadOnlyMany(ROX)  多节点只读
    ReadWriteMany(RWX)  多节点读写
  capacity(定义PV空间的大小)
    storage(指定大小)

[root@k8s-master volumes]# kubectl explain pvc   #查看PVC的定义方式
KIND:     PersistentVolumeClaim
VERSION:  v1
FIELDS:
   apiVersion   <string>
   kind <string>  
   metadata <Object>
   spec <Object>
[root@k8s-master volumes]# kubectl explain pvc.spec
spec:
  accessModes(定义访问模式,必须是PV的访问模式的子集)
  resources(定义申请资源的大小)
    requests:
      storage: 

4.2の設定NFS店

MKDIR V {1,2,3、}
VIMの/ etc /エクスポート
/データ/ V1 192.168.0.0/24(rw,no_root_squash)
/データ/ V2 192.168.0.0/24(rw,no_root_squash)
/データ/ V3 192.168.0.0 / 24(RW、にno_root_squash)

4.3 3曲のPVを定義します

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv001
  labels:
    name: pv001
spec:
  nfs:
    path: /data/v1
    server: 50.1.1.111
  accessModes: ["ReadWriteMany","ReadWriteOnce",]
  capacity:
    storage: 1Gi
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv002
  labels:
    name: pv002
spec:
  nfs:
    path: /data/v2
    server: 50.1.1.111
  accessModes: ["ReadWriteMany","ReadWriteOnce",]
  capacity:
    storage: 2Gi
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv003
  labels:
    name: pv003
spec:
  nfs:
    path: /data/v3
    server: 50.1.1.111
  accessModes: ["ReadWriteMany","ReadWriteOnce",]
  capacity:
    storage: 5Gi

PVCの作成4.4

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mypvc
  #name ,给下面调用的
spec:
  accessModes: ["ReadWriteMany"]
  #声明访问类型,只能匹配到,pv包含的
  resources:
    requests:
      storage: 3Gi
      #声明需要3GB的空间,只能匹配3GB及意思的PV
---
apiVersion: v1
kind: Pod
metadata:
  name: cs-hostpath
spec:
  containers:
  - name: myapp
    image: ikubernetes/myapp:v1
    imagePullPolicy: IfNotPresent
    volumeMounts:
    - name: html
      mountPath: /usr/share/nginx/html/
  volumes:
  - name: html
    persistentVolumeClaim:
    #挂载存储卷类型为 pvc
      claimName: mypvc
      #指定PVC的name为 "mypvc"

Configurationコンテナアプリケーション:秘密とconfigMap

シークレット:パスワード、秘密鍵、証明書およびその他の文書などポッド機密情報への転送のために、この情報はおそらくコンテナ内に定義されている場合は明らかにすることで、秘密のリソースは、ユーザーがポッドでマウントその後、不安な人にこの情報を保存することができます機密データやデカップリングの効果を実現。
ConfigMap:主に使用されるポッドに非機密データを注入するために使用される、定義および管理するために、構成ファイルのコンテナセットを達成するために、ポッドConfigMap参照ボリュームを用いて、次にオブジェクトのうち、ユーザデータを直接ConfigMapに格納され、以下同様です。

--from-リテラルによって作成されました

kubectl create secret generic mysecret --from-literal=username=admin --from-literal=password=123456
#创建一个Secret namae为 mysecret 

--from-ファイルによって作成された
各ファイルのメッセージ・エントリの内容に対応します。

[root@cs25 ~]# echo "admin" >username
[root@cs25 ~]# echo "123456" >password
kubectl create secret generic mysecret2 --from-file=username --from-file=password

--from-ENV-ファイル作成することにより
、ファイル一つの情報のエントリに対応する行ごとにキー=値をenv.txt。

[root@cs25 ~]# cat << EOF > env.txt
> username=admin
> password=12345
> EOF
kubectl create secret generic mysecret3 --from-env-file=env.txt

:YAMLプロファイルによって
K8Sストレージボリューム
base64での最初の完全なトランスコーディングのパスワードの機密データコマンド

vimのsecret.yaml

apiVersion: v1
kind: Secret
metadata:
  name: mysecretyaml
data:
  username: YWRtaW4K
  password: MTIzNDU2Cg==
    #键值

ビュー
K8Sストレージボリューム
K8Sストレージボリューム
K8Sストレージボリューム

K8Sストレージボリューム
#アンチデコード

使用秘密

apiVersion: v1
kind: Pod
metadata:
  name: pod-secret
spec:
  containers:
  - name: pod-secret
    image: nginx
    volumeMounts:
    - name: foo
      #挂载那个存储卷
      mountPath: "/etc/foo"
      #pod 挂载的路径
  volumes:
  - name: foo
    #创建存储卷,name,用于被pod 调用
    secret:
    #存储卷类型
      secretName: mysecret
      #用那个文件

K8Sストレージボリューム
幹部は/ etc / fooへのコンテナのCDにあなたは私たちがmysecretにキーと値を作成して見ることができます

リダイレクトデータ

apiVersion: v1
kind: Pod
metadata:
  name: pod-secret
spec:
  containers:
  - name: pod-secret
    image: nginx
    volumeMounts:
    - name: foo
      mountPath: "/etc/foo"
  volumes:
  - name: foo
    secret:
      secretName: mysecret
      items:
      #自定义存放路径及文件名
      - key: username
        path: 233/name
        #重定向路径及文件名(key),注意路径要写相对路径
      - key: password
        path: 233/pass

K8Sストレージボリューム
この時間データは、内の「/ etc / fooの/ 233」フォルダにリダイレクトされます

シークレットこの方法はまた、動的更新をサポート:秘密の更新されたデータコンテナも更新されます。
secret.yaml vimの
K8Sストレージボリューム
K8Sストレージボリューム
kubectl secret.yaml -f適用し
K8Sストレージボリューム
、参照するには、ログイン値の名前が変更されました

環境変数は、キーを渡します

apiVersion: v1
kind: Pod
metadata:
  name: pod-secret
spec:
  containers:
  - name: pod-secret
    image: nginx
    env:
      - name: username
        #传递到容器内部的环境变量
        valueFrom:
          secretKeyRef:
            name: mysecret
            #使用那个secret
            key: username
            #使用那个key
      - name: password
        valueFrom:
          secretKeyRef:
            name: mysecret
            key: password

K8Sストレージボリューム
エコーexecを環境変数にログイン

SECRET_USERNAMEとSECRET_PASSWORDは成功し、環境変数を介して秘密のデータを読み取ります。
環境変数がシークレット、シークレットを読み取ることは容易であることに留意すべきであるが、動的更新をサポートすることはできません。
シークレットコードは、トークン、プライベートキーおよびその他の機密データポッドを提供することができ、そのようなアプリケーションの構成情報などのいくつかの非機密データのために、ConfigMapを使用することができます。

ない1一実施によってより多くのサポートを追加configmap
のインスタンスにconfigmap
vimのwww.conf#nging作成プロフィール

server {
    server_name www.233.com;
    listen 8860;
    root /data/web/html;
}

ConfigMap ConfigMapを作成-csがkubectl --from = www.conf-ファイル
# "configmap-CS" configmapリソースの名前を作成し、コンテンツがwww.confする前に作成された
vimのnginxの作成ポッドConfigMapの#

 apiVersion: v1
kind: Pod
metadata:
  name: pod-secret
spec:
  containers:
  - name: pod-secret
    image: nginx
    volumeMounts:
    - name: nginxconf
      #调用名为"nginxconf"的存储卷
      mountPath: /etc/nginx/conf.d/
  volumes:
  - name: nginxconf
    #创建存储卷
    configMap:
    #存储卷类型为configMap
      name: configmap-cs
      #使用configmap里面的"configmap-cs"这个资源

-f nginxの-configmap.yaml#読み込んでスタート適用kubectl
K8Sストレージボリューム
効果に通常のアクセス設定ファイルを説明することができ、表示IPアクセス首都ポート私は定義されています。
K8Sストレージボリューム
ファイルを表示するためにログイン

編集ConfigMap-CSのkubectlのconfigmaps
、リソースを変更#コマンドを同じVimを使用し、使用
PODマウントプロセスを

 POD先挂载名为"nginxconf"的存储卷
 "nginxconf"的存储卷的内容是调用configMap资源里 "configmap-cs"这个资源生成的
 "configmap-cs" 这个资源是读取www.conf 文件生成的

おすすめ

転載: blog.51cto.com/13620944/2462121