JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

K8s/K3S系列之二:配置ConfigMap k8s 配置管理

wys521 2024-10-20 12:21:17 精选教程 279 ℃ 0 评论

# 一、统一配置中心

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

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

apiVersion: v1
kind: ConfigMap
metadata:
  name: nginx-configmap
data:
  nginx_conf: |-
    #user  nobody;
    worker_processes  1;
    events {
        worker_connections  1024;
    }
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
        server {
            listen       80;
            server_name  localhost;
            location / {
                root   html;
                index  index.html index.htm;
            }
            #测试个性cm
            location /test/ {
                proxy_pass http://www.baidu.com/;
                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 -f  configmap-nginx.yml


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

 kubectl  apply -f deployment-nginx-v2.yml

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

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

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表