1、使用目录方式创建configmap

[root@k8s-node1 tomcat-config]# kubectl create configmap tomcat-config --from-file=/root/tomcat-config
说明:/root/tomcat-config    #保存配置文件的目录
说明:tomcat-config    #configmap的名称
查看/root/tomcat-config内容:
[root@k8s-node1 tomcat-config]# ll /root/tomcat-config/
total 224
drwxr-s--- 3 root root     23 Nov 27 15:00 Catalina
-rw-r--r-- 1 root root  13548 Nov 27 15:00 catalina.policy
-rw-r--r-- 1 root root   7661 Nov 27 15:00 catalina.properties
-rw-r--r-- 1 root root   1338 Nov 27 15:00 context.xml
-rw-r--r-- 1 root root   1149 Nov 27 15:00 jaspic-providers.xml
-rw-r--r-- 1 root root   2313 Nov 27 15:00 jaspic-providers.xsd
-rw-r--r-- 1 root root   3916 Nov 27 15:00 logging.properties
-rw-r--r-- 1 root root   7513 Nov 27 15:28 server.xml
-rw-r--r-- 1 root root   2164 Nov 27 15:00 tomcat-users.xml
-rw-r--r-- 1 root root   2633 Nov 27 15:00 tomcat-users.xsd
-rw-r--r-- 1 root root 171482 Nov 27 15:00 web.xml

2、查看configmap

[root@k8s-node1 tomcat-config]# kubectl get cm
NAME             DATA      AGE
tomcat-config    10        10m

3、创建tomcat deployment的yanl文件

[root@k8s-node1 yaml_file]# cat tomcat.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: tomcat
spec:
  replicas: 1
  selector:
    matchLabels:
      app: tomcat
  minReadySeconds: 1
  progressDeadlineSeconds: 60
  revisionHistoryLimit: 5
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1
  template:
    metadata:
      name: tomcat
      labels:
        app: tomcat
    spec:
      containers:
      - name: tomcat
        image: tomcat:8
        ports:
        - containerPort: 8086
        volumeMounts:
        - name: tz-config
          mountPath: /etc/localtime
        - name: tomcat-t1
          mountPath: /usr/local/tomcat/conf          #configmap挂载到容器内部的目录
      volumes:
      - name: tz-config
        hostPath:
          path: /usr/share/zoneinfo/Asia/Shanghai
      - name: tomcat-t1
        configMap:
          name: tomcat-config          #定义configmap名称
---
apiVersion: v1
kind: Service
metadata:
  name: tomcat
spec:
  type: NodePort
  ports:
   - port: 8086
  selector:
    app: tomcat

4、创建tomcat deployment

kubectl create -f tomcat.yaml 

5、查看部署状态

[root@k8s-node1 tomcat-config]# kubectl get pod
NAME                                   READY     STATUS    RESTARTS   AGE
tomcat-5ff9cfd9c5-d8rng                1/1       Running   0          15m

6、查看svc

[root@k8s-node1 tomcat-config]# kubectl get svc
NAME                  TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)             AGE
tomcat                NodePort    10.1.164.83    <none>        8086:27913/TCP      15m

7、访问tomcat测试

[root@k8s-node1 yaml_file]# curl -I 192.168.29.176:27913
HTTP/1.1 200 
Content-Type: text/html;charset=UTF-8
Transfer-Encoding: chunked
Date: Wed, 27 Nov 2019 07:52:53 GMT

附录:在一般情况下 configmap 挂载文件时,会先覆盖掉挂载目录,然后再将 congfigmap 中的内容作为文件挂载进行。如果想不对原来的文件夹下的文件造成覆盖,只是将 configmap 中的每个 key,按照文件的方式挂载到目录下,可以使用 subpath 参数

[root@k8s-node1 yaml_file]# cat tomcat.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: tomcat
spec:
  replicas: 1
  selector:
    matchLabels:
      app: tomcat
  minReadySeconds: 1
  progressDeadlineSeconds: 60
  revisionHistoryLimit: 5
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1
  template:
    metadata:
      name: tomcat
      labels:
        app: tomcat
    spec:
      containers:
      - name: tomcat
        image: tomcat:8
        ports:
        - containerPort: 8085
        volumeMounts:
        - name: tz-config
          mountPath: /etc/localtime
        - name: tomcat-t1
          mountPath: /usr/local/tomcat/conf/server.xml
          subPath: server.xml            #指定某个文件修改
      volumes:
      - name: tz-config
        hostPath:
          path: /usr/share/zoneinfo/Asia/Shanghai
      - name: tomcat-t1
        configMap:
          name: tomcat-config
---
apiVersion: v1
kind: Service
metadata:
  name: tomcat
spec:
  type: NodePort
  ports:
   - port: 8085
  selector:
    app: tomcat
Logo

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

更多推荐