K8s_K3S系列之二_配置ConfigMap

# 一、统一配置中心

使用挂在配置文件方式,支持热更新,配置文件内容可命令生成,后复制到configmap的yml文件中。这里不做介绍了

- 1、编辑ConfigMap配置文件 configmap-nginx.yml 直接上内容:

apiVersion: v1 kind: ConfigMap metadata: name: nginx-configmap data: nginx_conf: |- #usernobody; worker_processes1; events { worker_connections1024; } http { include mime.types; default_typeapplication/octet-stream; sendfileon; keepalive_timeout65; server { listen 80; server_namelocalhost; location / { root html; indexindex.html index.htm; } #测试个性cm location /test/ { proxy_pass ; proxy_redirect default; proxy_set_header Host www.baidu.com; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; add_header Set-Cookie "flag=ssz-test"; } error_page 500 502 503 504/50x.html; location = /50x.html { root html; } } }

- 2、执行发布命令(支持热更新)

kubectl apply -f configmap-nginx.yml

#二、发布Pod

- 1 编写配置文件Deployment配置文件: deployment-nginx.yml

内容如下:

apiVersion: apps/v1 kind: Deployment metadata: name: my-nginx spec: selector: matchLabels: app: my-nginx replicas: 2 template: metadata: labels: app: my-nginx spec: containers: - name: my-nginx image: nginx ports: - containerPort: 80 volumeMounts: - mountPath: /etc/nginx/nginx.conf name: nginx subPath: nginx.conf volumes: - name: nginx configMap: name: nginx-configmap items: - key: nginx_conf path: nginx.conf #resources: #requests: #cpu: 1 #memory: 500Mi #limits: #cpu: 2 #memory: 1024Mi

```

- 2、执行发布命令

kubectl apply -f deployment-nginx.yml

#三、发布Service (NodePort方式)

- 1、编写Service配置 service-nginx.yml

apiVersion: v1 kind: Service metadata: name: nginx-svc#定义service名称为nginx-service labels: app: nginx-svc #为service打上app标签 spec: type: NodePort #使用NodePort方式开通,在每个Node上分配一个端口作为外部访问入口 selector: app: my-nginx ports: - port: 8000#port是k8s集群内部访问service的端口,即通过clusterIP: port可以访问到某个service targetPort: 80#targetPort是pod的端口,从port和nodePort来的流量经过kube-proxy流入到后端pod的targetPort上,最后进入容器 nodePort: 30080#nodePort是外部访问k8s集群中service的端口,通过nodeIP: nodePort可以从外部访问到某个service

- 2、执行发布命令

kubectl apply -f service-nginx.yml

#四、总结

- 1、使用NodePort方式发布的Service端口范围只能30000~32767,可以在任一节点访问。如果想使用80端口,只能前置 nginx 反向代理到80 端口。

- 2、关于修改configmap内容后的更新。

直接更新configmap-nginx.yml内容 ,比如个性其中的baidu为163 ,

kubectl apply -fconfigmap-nginx.yml

配置即可生效。但是pod中的nginx是无法加载的,可以升级nginx镜像版本后滚动更新,如:

kubectlapply -f deployment-nginx-v2.yml

也可以直接销毁当前容器新建:

kubectl scale deployment my-nginx --replicas= 0 kubectl scale deployment my-nginx --replicas= 2