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: {}
#定义存储卷类型
同じ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
ノードスケジューリング、上cs27ノードにここスケジューリングにそのノードを見
cs27ノード上のフォルダを作成します。mkdir /データ/ホストパス/ -pv#ホストパスストレージボリューム
エコー「ホストパスストレージボリュームテスト」> /データ/ホストパス/ index.htmlを#ストレージボリュームのページファイルを生成し
たファイルの内容は、上記生成された参照して、それを訪問カール、私たちは
ここに、コンテナに注意し、その中にデータを変更し、それがホストパスのストレージボリュームに同期するとハングアップします負荷のように
共有ストレージボリュームを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のをインストールし、インストール
実行中の#をshowmountは-e 50.1.1.111ノードのノード特権がマウントかどうかを確認するには
-f nfs.yamlの#ロードを適用kubectlコンテナリソースは
、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プロファイルによって
base64での最初の完全なトランスコーディングのパスワードの機密データコマンド
vimのsecret.yaml
apiVersion: v1
kind: Secret
metadata:
name: mysecretyaml
data:
username: YWRtaW4K
password: MTIzNDU2Cg==
#键值
ビュー
#アンチデコード
使用秘密
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
#用那个文件
幹部は/ 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
この時間データは、内の「/ etc / fooの/ 233」フォルダにリダイレクトされます
シークレットこの方法はまた、動的更新をサポート:秘密の更新されたデータコンテナも更新されます。
secret.yaml vimの
kubectl secret.yaml -f適用し
、参照するには、ログイン値の名前が変更されました
環境変数は、キーを渡します
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
エコー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
効果に通常のアクセス設定ファイルを説明することができ、表示IPアクセス首都ポート私は定義されています。
ファイルを表示するためにログイン
編集ConfigMap-CSのkubectlのconfigmaps
、リソースを変更#コマンドを同じVimを使用し、使用
PODマウントプロセスを
POD先挂载名为"nginxconf"的存储卷
"nginxconf"的存储卷的内容是调用configMap资源里 "configmap-cs"这个资源生成的
"configmap-cs" 这个资源是读取www.conf 文件生成的