Kubernetes(5)存储

configmap
四种创建方式

1.

[k8s@server11 ~]$ kubectl create configmap my-config --from-literal=key1=config1 --from-literal=key2=config2
configmap/my-config created
[k8s@server11 ~]$ kubectl get cm my-config -o yaml
apiVersion: v1
data:
  key1: config1
  key2: config2
kind: ConfigMap
metadata:
  creationTimestamp: "2020-09-15T01:54:07Z"
  managedFields:
  - apiVersion: v1
    fieldsType: FieldsV1
    fieldsV1:
      f:data:
        .: {}
        f:key1: {}
        f:key2: {}
    manager: kubectl-create
    operation: Update
    time: "2020-09-15T01:54:07Z"
  name: my-config
  namespace: default
  resourceVersion: "340089"
  selfLink: /api/v1/namespaces/default/configmaps/my-config
  uid: 3143c90a-3f40-4b9f-b611-74dcafac2a56

[k8s@server11 ~]$ kubectl describe cm my-config 
Name:         my-config
Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====
key1:
----
config1
key2:
----
config2
Events:  <none>

[k8s@server11 ~]$ kubectl create configmap my-config-2 --from-file=/etc/resolv.conf
configmap/my-config-2 created
[k8s@server11 ~]$ kubectl get cm my-config-2 
NAME          DATA   AGE
my-config-2   1      17s
[k8s@server11 ~]$ kubectl get cm my-config-2  -o yaml
apiVersion: v1
data:
  resolv.conf: |2

    nameserver 114.114.114.114
kind: ConfigMap
metadata:
  creationTimestamp: "2020-09-15T01:59:39Z"
  managedFields:
  - apiVersion: v1
    fieldsType: FieldsV1
    fieldsV1:
      f:data:
        .: {}
        f:resolv.conf: {}
    manager: kubectl-create
    operation: Update
    time: "2020-09-15T01:59:39Z"
  name: my-config-2
  namespace: default
  resourceVersion: "340927"
  selfLink: /api/v1/namespaces/default/configmaps/my-config-2
  uid: 8c7434d6-a55d-4771-b342-ac8f4316287a

[k8s@server11 configmap]$ mkdir test 
[k8s@server11 configmap]$ cd /etc/passwd test/
-bash: cd: /etc/passwd: Not a directory
[k8s@server11 configmap]$ cp /etc/passwd test/
[k8s@server11 configmap]$ cp /etc/hosts test/
[k8s@server11 configmap]$ ls
test
[k8s@server11 configmap]$ kubectl create configmap  my-config-3 --from-file=test
configmap/my-config-3 created
[k8s@server11 configmap]$ kubectl get cm my-config-3 -o yaml
apiVersion: v1
data:
  hosts: "127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4\n::1
    \        localhost localhost.localdomain localhost6 localhost6.localdomain6\n172.25.16.250
    \n172.25.16.10 server10\n172.25.16.11 server11\n172.25.16.12 server12 www1.westos.org\n172.25.16.13
    server13 \n172.25.16.14 server14\n172.25.16.100 harbor reg.westos.org\n172.25.16.20
    server7  \n"
  passwd: |
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    sync:x:5:0:sync:/sbin:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    halt:x:7:0:halt:/sbin:/sbin/halt
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    games:x:12:100:games:/usr/games:/sbin/nologin
    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    nobody:x:99:99:Nobody:/:/sbin/nologin
    systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
    dbus:x:81:81:System message bus:/:/sbin/nologin
    polkitd:x:999:998:User for polkitd:/:/sbin/nologin
    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    postfix:x:89:89::/var/spool/postfix:/sbin/nologin
    k8s:x:1000:1000::/home/k8s:/bin/bash
kind: ConfigMap
metadata:
  creationTimestamp: "2020-09-15T02:03:51Z"
  managedFields:
  - apiVersion: v1
    fieldsType: FieldsV1
    fieldsV1:
      f:data:
        .: {}
        f:hosts: {}
        f:passwd: {}
    manager: kubectl-create
    operation: Update
    time: "2020-09-15T02:03:51Z"
  name: my-config-3
  namespace: default
  resourceVersion: "341561"
  selfLink: /api/v1/namespaces/default/configmaps/my-config-3
  uid: d0493f40-6fca-4b49-9cae-77406478d692

4.文件创建方式:

[k8s@server11 configmap]$ vim cm1.yml
[k8s@server11 configmap]$ kubectl create -f cm1.yml 
[k8s@server11 configmap]$ kubectl get cm 
NAME          DATA   AGE
cm1-config    2      22s
my-config     2      14m
my-config-2   1      8m48s
my-config-3   2      4m36s

在这里插入图片描述

在这里插入图片描述
如何使用configmap:

通过环境变量的方式直接传递给pod

通过在pod的命令行下运行的方式

作为volume的方式挂载到pod内

在这里插入图片描述

[k8s@server11 configmap]$ kubectl describe  cm cm1-config 
Name:         cm1-config
Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====
db_host:
----
172.25.16,1
db_port:
----
3306
Events:  <none>
[k8s@server11 configmap]$ vim pod1.yml 
[k8s@server11 configmap]$ cat pod1.yml 
apiVersion: v1
kind: Pod
metadata:
  name: pod1
spec:
  containers:
    - name: pod1
      image: busybox
      command: ["/bin/sh", "-c", "env"]
      env:
        - name: key1
          valueFrom:
            configMapKeyRef:
 
[k8s@server11 configmap]$ kubectl logs pod1
KUBERNETES_PORT=tcp://10.96.0.1:443
KUBERNETES_SERVICE_PORT=443
HOSTNAME=pod1
SHLVL=1
HOME=/root
KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
KUBERNETES_PORT_443_TCP_PORT=443
key1=172.25.16,1
KUBERNETES_PORT_443_TCP_PROTO=tcp
key2=3306
KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443
KUBERNETES_SERVICE_PORT_HTTPS=443
KUBERNETES_SERVICE_HOST=10.96.0.1
PWD=/
[k8s@server11 configmap]$ 


2.使用conigmap设置命令行参数

[k8s@server11 configmap]$ vim pod1.yml 
[k8s@server11 configmap]$ kubectl create -f pod1.yml 
pod/pod1 created
[k8s@server11 configmap]$ kubectl logs pod1 
172.25.16,1 3306
$ vim pod2.yaml
apiVersion: v1
kind: Pod
metadata:
  name: pod1
spec:
  containers:
    - name: pod1
      image: busybox
      command: ["/bin/sh", "-c", "echo $(db_host) $(db_port)"]
      envFrom:
        - configMapRef:
            name: cm1-config
  restartPolicy: Never

3.通过数据卷使用configmap

在这里插入图片描述

apiVersion: v1
kind: Pod
metadata:
  name: pod2
spec:
  containers:
    - name: pod2
      image: busybox
      command: ["/bin/sh", "-c", "cat /config/db_host"]
      volumeMounts:
      - name: config-volume
        mountPath: /config
  volumes:
    - name: config-volume
      configMap:
        name: cm1-config
  restartPolicy: Never

4

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx
          ports:
          - containerPort: 80
          volumeMounts:
          - name: config-volume
            mountPath: /config
      volumes:
        - name: config-volume
          configMap:
            name: cm1-config
            
  kubectl get pod -o wide 
NAME                        READY   STATUS    RESTARTS   AGE   IP              NODE       NOMINATED NODE   READINESS GATES
my-nginx-5cb94b7564-gxjlq   1/1     Running   0          16s   10.244.152.13   server12   <none>           <none>
[k8s@server11 configmap]$ curl 10.244.152.12
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>


echo www.westos.org > index.html
[k8s@server11 configmap]$ kubectl create configmap cm2-config --from-file=index.html 
configmap/cm2-config created
[k8s@server11 configmap]$ kubectl get cm
NAME          DATA   AGE
cm1-config    2      59m
cm2-config    1      6s
my-config     2      87m
my-config-2   1      82m
my-config-3   2      77m
[k8s@server11 configmap]$ cat pod1.yml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx
          ports:
          - containerPort: 80
          volumeMounts:
          - name: config-volume
            mountPath: /usr/share/nginx/html
      volumes:
        - name: config-volume
          configMap:
            name: cm2-config











     

configmap热更新后,并不会触发相关Pod的滚动更新,需要手动触发

[k8s@server11 configmap]$ kubectl create configmap nginxconf1 --from-file=nginx.conf 
configmap/nginxconf1 created
[k8s@server11 configmap]$ kubectl get cm
NAME          DATA   AGE
cm1-config    2      168m
cm2-config    1      108m
my-config     2      3h16m
my-config-2   1      3h10m
my-config-3   2      3h6m
nginxconf     1      100m
nginxconf1    1      8s

[k8s@server11 configmap]$ kubectl create -f pod1.yml 
deployment.apps/my-nginx created
[k8s@server11 configmap]$ kubectl get pod
NAME                       READY   STATUS              RESTARTS   AGE
my-nginx-66cd7954f-h2pjm   0/1     ContainerCreating   0          8s
[k8s@server11 configmap]$ kubectl get pod -o wide 
NAME                       READY   STATUS    RESTARTS   AGE   IP              NODE       NOMINATED NODE   READINESS GATES
my-nginx-66cd7954f-h2pjm   1/1     Running   0          12s   10.244.152.16   server12   <none>           <none>
[k8s@server11 configmap]$ curl 10.244.152.16
curl: (7) Failed connect to 10.244.152.16:80; Connection refused
[k8s@server11 configmap]$ curl 10.244.152.16:8000 //在nginx.conf文件下我设置我8000端口所以必须加8000端口在可以访问
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>
[k8s@server11 configmap]$ cat nginx.conf 
server {
    listen       8000;
    server_name  _;

    location / {
        root /usr/share/nginx/html;
        index  index.html index.htm;
    }
}


我们更改nginxconf1 后 更新不会触发 我们怎么解决了?

[k8s@server11 configmap]$ kubectl edit cm nginxconf1
configmap/nginxconf1 edited
[k8s@server11 configmap]$ kubectl exec my-nginx-66cd7954f-h2pjm -- cat /etc/nginx/conf.d/nginx.conf
[k8s@server11 configmap]$ kubectl exec my-nginx-66cd7954f-h2pjm -- cat /etc/nginx/conf.d/nginx.conf
server {
    listen       8080
    server_name  _;

    location / {
        root /usr/share/nginx/html;
        index  index.html index.htm;
    }
}
//此处已经自动更新到了 8080端口  
//但是我们使用这个8080端口并不可以访问
//此时我们可以选择重新推一遍文件,但是过于麻烦
//所以使用以下命令可以直接完成更新
 kubectl patch deployments.apps my-nginx --patch '{"spec": {"template": {"metadata": {"annotations": {"version/config": "20200915"}}}}}'
 deployment.apps/my-nginx patched

在这里插入图片描述
我们再次尝试这个能否用8080端口连接 上一个已经被回收了 所以ip地址有了变更
在这里插入图片描述

hostpath:
在这里插入图片描述

我们先创建一个vhost目录 如图所时。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值