转发 https://www.jianshu.com/p/cf3e2218f283
转发 https://www.kubernetes.org.cn/3138.html
注意:configmap不用也罢
1、通过文件创建,把tomcat的配置文件catalina.sh挂到容器内
创建configmap
从文件中创建
[root@lab2 ceshi]# ls /usr/local/k8s/configmap/file/dandang/
catalina.sh
[root@lab2 ceshi]# kubectl create configmap dandang-config -n development --from-file=/usr/local/k8s/configmap/file/dandang/catalina.sh
[root@lab2 ceshi]# kubectl get configmap -n development
NAME DATA AGE
dandang-config 1 2m
获得configmap的yaml文件
[root@lab2 ~]# kubectl get configmap dandang-config -n development -o yaml
从文本中创建,直接指定key的名字,创建后没有yaml文件
[root@lab2 ~]# kubectl create configmap dandang-configmap -n development --from-file=game-special-key=/usr/local/k8s/configmap/dbconfig.properties
获得configmap详细信息
[root@lab2 ~]# kubectl describe configmap dandang-config -n development
创建服务,使用configmap
[root@lab2 ceshi]# cat /yunwei/dandang/dandang.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: dandang
namespace: development
spec:
replicas: 1
template:
metadata:
labels:
name: dandang
spec:
containers:
- name: dandang
image: 10.1.1.71:5000/library/dandang.ceshi:v2
ports:
- containerPort: 8080
volumeMounts:
- name: config-volume
mountPath: /root/apache-tomcat-8.5.31/bin
volumes:
- name: config-volume
configMap:
name: dandang-config
---
apiVersion: v1
kind: Service
metadata:
name: dandang
namespace: development
spec:
type: NodePort
ports:
- port: 8080
targetPort: 8080
selector:
name: dandang
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: dandang
namespace: development
spec:
rules:
- host: www.dandang.com
http:
paths:
- path: /
backend:
serviceName: dandang
servicePort: 8080
[root@lab2 ceshi]# kubectl create -f /yunwei/dandang/dandang.yaml
replicationcontroller/dandang created
service/dandang created
ingress.extensions/dandang created
2、通过yaml创建
[root@lab2 ceshi]# pwd
/yunwei/ceshi
[root@lab2 ceshi]# ls
configmap.yaml nginx.yaml
创建configmap
[root@lab2 configmap]# cat configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: configmap-demo
namespace: default
data:
index.html: |
Hello Everyone
创建服务,使用configmap
[root@lab2 configmap]# cat nginx.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: configmap-demo2
spec:
template:
metadata:
labels:
app: configmap-demo2
spec:
containers:
- name: configmap-demo2
image: 192.168.43.65:5000/library/nginx/latest
ports:
- containerPort: 80
volumeMounts:
- name: config-volume
mountPath: /usr/share/nginx/html/
volumes:
- name: config-volume
configMap:
name: configmap-demo
[root@lab2 ceshi]# kubectl create -f .
configmap/configmap-demo created
[root@lab2 ceshi]# kubectl get po -o wide
NAME READY STATUS RESTARTS AGE IP NODE
configmap-demo2-5wkw6 1/1 Running 0 30s 10.244.5.19 lab3
访问测试:
[root@lab2 ceshi]# curl 10.244.5.19:80
Hello Everyone
更新配置文件
[root@lab2 ceshi]# vi configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: configmap-demo
namespace: default
data:
index.html: |
Hello World!
重新生成下nginx.yaml 注意:不是configmap.yaml
[root@lab2 ceshi]# kubectl create -f nginx.yaml
Error from server (AlreadyExists): error when creating "nginx.yaml": replicationcontrollers "configmap-demo2" already exists
访问测试:
[root@master change]# curl http://192.168.0.76
Hello World!
进容器里面看配置文件是否改掉
[root@lab2 ceshi]# kubectl exec -it configmap-demo2-5wkw6 sh
# cd /usr/share/nginx/html/
# ls
index.html
# cat index.html
Hello World!
单个文件挂在实例
volumeMounts:
- name: gitlab-etc
mountPath: "/etc/gitlab/gitlab.rb"
subPath: gitlab.rb
- name: gitlab-data
mountPath: "/var/opt/gitlab"
volumes:
- name: gitlab-etc
configMap:
name: gitlab-etc-configmap
#Add ConfigMap data to a specific path in the Volume
items:
- key: gitlab.rb
path: gitlab.rb