好看欧美视频网站模板下载 迅雷下载地址,网页成品,成都手机微信网站建设报价,在线ps网站本文收录在容器技术学习系列文章总目录 1、configmap 1.1 认识configmap ConfigMap用于保存配置数据的键值对#xff0c;可以用来保存单个属性#xff0c;也可以用来保存配置文件。ConfigMap跟secret很类似#xff0c;但它可以更方便地处理不包含敏感信息的字符串。 1.2 创建…本文收录在容器技术学习系列文章总目录 1、configmap 1.1 认识configmap ConfigMap用于保存配置数据的键值对可以用来保存单个属性也可以用来保存配置文件。ConfigMap跟secret很类似但它可以更方便地处理不包含敏感信息的字符串。 1.2 创建configmap 1.2.1 通过命令行 创建一个名为nginx-config的configmap指定端口和server name [rootmaster ~]# kubectl create configmap nginx-config --from-literalnginx_port80 --from-literalserver_namemyapp.along.com
configmap/nginx-config created
[rootmaster ~]# kubectl get cm
NAME DATA AGE
nginx-config 2 11s
[rootmaster ~]# kubectl describe cm nginx-config
Name: nginx-config
Namespace: default
Labels: none
Annotations: noneDatanginx_port:
----
80
server_name:
----
myapp.along.com
Events: none1.2.2 通过文件 1准备文件 [rootmaster ~]# mkdir configmap
[rootmaster ~]# cd configmap
[rootmaster configmap]# vim www.conf
server {server_name myapp.along.com;listen 80;root /data/web/html/;
}2创建查询认证 [rootmaster configmap]# kubectl create configmap nginx-www --from-file./www.conf
configmap/nginx-www created
[rootmaster configmap]# kubectl get cm
NAME DATA AGE
nginx-config 2 3m
nginx-www 1 5s
[rootmaster configmap]# kubectl describe cm nginx-www
Name: nginx-www
Namespace: default
Labels: none
Annotations: noneDatawww.conf:
----
server {server_name myapp.along.com;listen 80;root /data/web/html/;
}Events: none1.3 创建pod使用configmap 1.3.1 pod通过环境变量使用configmap 通过使用环境变量传入pod的configmap不能实时更新 1编写configmap的yaml文件 [rootmaster configmap]# vim pod-configmap.yaml
apiVersion: v1
kind: Pod
metadata:name: pod-cm-1namespace: defaultlabels:app: myapptier: frontendannotations:along.com/created-by: cluster admin
spec:containers:- name: myappimage: ikubernetes/myapp:v1ports:- name: httpcontainerPort: 80env:- name: NGINX_SERVER_PORTvalueFrom:configMapKeyRef:name: nginx-configkey: nginx_port- name: NGINX_SERVER_NAMEvalueFrom:configMapKeyRef:name: nginx-configkey: server_name2创建pod查询认证 [rootmaster configmap]# kubectl apply -f pod-configmap.yaml
pod/pod-cm-1 created
[rootmaster configmap]# kubectl get pods
NAME READY STATUS RESTARTS AGE
pod-cm-1 1/1 Running 0 41s
---查询pod内部变量
[rootmaster configmap]# kubectl exec -it pod-cm-1 -- printenv |grep NGINX_SERVER
NGINX_SERVER_PORT80
NGINX_SERVER_NAMEmyapp.along.com3通过环境变量导入configmap修改configmap后pod中内容不会更改 ① 使用edit修改configmap把nginx_port 80改为8080 [rootmaster configmap]# kubectl edit cm nginx-config
... ...nginx_port: 8080 #把80改为8080
... ...
configmap/nginx-config edited② 查询configmap被修改但是pod中变量并未修改 因为configmap只是在容器启动时加载生效现在pod已经创建再修改不会生效 ------cm已经修改------
[rootmaster configmap]# kubectl describe cm nginx-config
Datanginx_port:
----
8080
server_name:
----
myapp.along.com
Events: none
------但是pod实际没有改变------
[rootmaster configmap]# kubectl exec -it pod-cm-1 -- printenv |grep NGINX_SERVER
NGINX_SERVER_PORT80
NGINX_SERVER_NAMEmyapp.along.com1.3.2 pod通过存储卷使用configmap 通过使用存储卷传入pod的configmap可以实时更新 1编写configmap的yaml文件并创建configmap 创建一个volume使用上边创建好的名为nginx-config的configmap [rootmaster configmap]# vim pod-configmap-2.yaml
apiVersion: v1
kind: Pod
metadata:name: pod-cm-2namespace: defaultlabels:app: myapptier: frontendannotations:along.com/created-by: cluster admin
spec:volumes:- name: nginxconfconfigMap:name: nginx-configcontainers:- name: myappimage: ikubernetes/myapp:v1ports:- name: httpcontainerPort: 80volumeMounts:- name: nginxconfmountPath: /etc/nginx/config.d/readOnly: true
[rootmaster configmap]# kubectl apply -f pod-configmap-2.yaml
pod/pod-cm-2 created2登入pod中查询验证 [rootmaster configmap]# kubectl get pods
NAME READY STATUS RESTARTS AGE
pod-cm-2 1/1 Running 0 7s
[rootmaster ~]# kubectl exec -it pod-cm-2 -- /bin/sh
/ # cd /etc/nginx/config.d/
/etc/nginx/config.d # ls
nginx_port server_name
/etc/nginx/config.d # cat nginx_port
80
/etc/nginx/config.d # cat server_name
myapp.along.com3通过环境变量导入configmap修改configmap后pod中内容会更改 ① 使用edit修改configmap把nginx_port 80改为8080 [rootmaster ~]# kubectl edit cm nginx-config
apiVersion: v1
data:nginx_port: 8080 server_name: myapp.along.com
... ...
configmap/nginx-config edited② 再登入pod查看发现已经改变 [rootmaster ~]# kubectl exec -it pod-cm-2 -- /bin/sh
/ # cat /etc/nginx/config.d/nginx_port
8080/1.4 一个完整的configmap的应用实例 1.4.1 编写创建pod的yaml文件使用nginx-www的configmap [rootmaster configmap]# vim pod-configmap-3.yaml
apiVersion: v1
kind: Pod
metadata:name: pod-cm-3namespace: defaultlabels:app: myapptier: frontendannotations:along.com/created-by: cluster admin
spec:volumes:- name: nginxconfconfigMap:name: nginx-wwwcontainers:- name: myappimage: ikubernetes/myapp:v1ports:- name: httpcontainerPort: 80volumeMounts:- name: nginxconfmountPath: /etc/nginx/conf.d/readOnly: true1.4.2 创建pod [rootmaster configmap]# kubectl apply -f pod-configmap-3.yaml
pod/pod-cm-3 created
[rootmaster configmap]# kubectl get pods
NAME READY STATUS RESTARTS AGE
pod-cm-3 1/1 Running 0 24s1.4.3 登入pod查询配置是否成功 [rootmaster configmap]# kubectl exec -it pod-cm-3 -- /bin/sh
/ # cat /etc/nginx/conf.d/www.conf
server {server_name myapp.along.com;listen 80;root /data/web/html/;
}
/ # nginx -T |tail -7 #-T查询nginx的配置信息
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
# configuration file /etc/nginx/conf.d/www.conf:
server {server_name myapp.along.com;listen 80;root /data/web/html/;
}
---生成nginx的主页内容
/ # mkdir -p /data/web/html
/ # vi /data/web/html/index.html
h1Nginx Server configured by CM/h11.4.4 在其他节点访问验证是否成功 1在master上新开一个窗口查询pod对应的IP [rootmaster ~]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE
pod-cm-3 1/1 Running 0 7m 10.244.1.124 node22在任意节点上配置host使其能连通此pod [rootnode1 ~]# vim /etc/hosts
10.244.1.124 myapp.along.com3访问pod成功 [rootnode1 ~]# curl myapp.along.com
h1Nginx Server configured by CM/h1 1.4.5 通过修改configmap修改pod内nginx服务的端口 1修改configmap的配置将nginx的端口由80改为8888 [rootmaster ~]# kubectl edit cm nginx-www
apiVersion: v1
data:www.conf: server {\n\tserver_name myapp.along.com;\n\tlisten 8888;\n\troot /data/web/html/;\n}\n
... ...
configmap/nginx-www edited2在pod内还需要重载nginx配置现在是手工操作后面会使用k8s工具完成 / # cat /etc/nginx/conf.d/www.conf 查询configmap的修改是否生效
server {server_name myapp.along.com;listen 8888;root /data/web/html/;
}
/ # nginx -s reload 重载一下nginx配置
2019/02/25 02:32:00 [notice] 16#16: signal process started3在node节点上访问验证成功 [rootnode1 ~]# curl myapp.along.com:8888
h1Nginx Server configured by CM/h1 2、secret 2.1 认识secret Secret 对象类型用来保存敏感信息例如密码、OAuth 令牌和 ssh key。将这些信息放在 secret 中比放在 pod 的定义或者 docker 镜像中来说更加安全和灵活。 Secret 是一种包含少量敏感信息例如密码、token 或 key 的对象。这样的信息可能会被放在 Pod spec 中或者镜像中将其放在一个 secret 对象中可以更好地控制它的用途并降低意外暴露的风险。 用户可以创建 secret同时系统也创建了一些 secret。 要使用 secretpod 需要引用 secret。Pod 可以用两种方式使用 secret作为 volume 中的文件被挂载到 pod 中的一个或者多个容器里或者当 kubelet 为 pod 拉取镜像时使用。 Secret有三种类型 Service Account用来访问Kubernetes API由Kubernetes自动创建并且会自动挂载到Pod的/run/secrets/kubernetes.io/serviceaccount目录中 Opaquebase64编码格式的Secret用来存储密码、密钥等 kubernetes.io/dockerconfigjson用来存储私有docker registry的认证信息。 2.2 创建一个secret ---创建secret
[rootmaster ~]# kubectl create secret generic mysql-root-passwd --from-literalpasswordMyPss123
secret/mysql-root-passwd created
---查询secret信息
[rootmaster ~]# kubectl get secret
NAME TYPE DATA AGE
default-token-wjbzf kubernetes.io/service-account-token 3 35d
mysql-root-passwd Opaque 1 11s
---查询详细信息
[rootmaster ~]# kubectl describe secret mysql-root-passwd
Name: mysql-root-passwd
Namespace: default
Labels: none
Annotations: noneType: OpaqueDatapassword: 9 bytes #已经进行64位加密
---以yaml文件显示信息
[rootmaster ~]# kubectl get secret mysql-root-passwd -o yaml
apiVersion: v1
data:password: TXlQQHNzMTIz
kind: Secret
metadata:creationTimestamp: 2018-10-10T03:14:04Zname: mysql-root-passwdnamespace: defaultresourceVersion: 436965selfLink: /api/v1/namespaces/default/secrets/mysql-root-passwduid: 8adbf6ae-cc3a-11e8-bb48-005056277243
type: Opaque
---解密
[rootmaster ~]# echo TXlQQHNzMTIz |base64 -d
MyPss1232.3 通过secret向pod注入环境变量 1编写yaml文件创建pod [rootmaster configmap]# vim pod-secret-1.yaml
apiVersion: v1
kind: Pod
metadata:name: pod-secret-1namespace: defaultlabels:app: myapptier: frontendannotations:along.com/created-by: cluster admin
spec:containers:- name: myappimage: ikubernetes/myapp:v1ports:- name: httpcontainerPort: 80env:- name: MYSQL_ROOT_PASSWDvalueFrom:secretKeyRef:name: mysql-root-passwdkey: password
[rootmaster configmap]# kubectl apply -f pod-secret-1.yaml
pod/pod-secret-1 created2查询并认证 [rootmaster configmap]# kubectl get pods
NAME READY STATUS RESTARTS AGE
pod-secret-1 1/1 Running 0 14s
---验证查询pod中的环境变量筛选出MYSQL_ROOT_PASSWD
[rootmaster configmap]# kubectl exec pod-secret-1 -- printenv |grep MYSQL
MYSQL_ROOT_PASSWDMyPss123转载于:https://www.cnblogs.com/along21/p/10435468.html