首页
学习
活动
专区
圈层
工具
发布
25 篇文章
1
【云原生 | Kubernetes篇】深入万物基础-容器(五)
2
【云原生 | Kubernetes篇】深入了解Pod(六)
3
【云原生 | Kubernetes篇】深入RC、RS、DaemonSet、StatefulSet(七)
4
【云原生 | Kubernetes篇】深入了解Deployment(八)
5
【云原生 | Kubernetes篇】Kubernetes(k8s)工作负载(九)
6
【云原生 | Kubernetes篇】Kubernetes(k8s)网络(十)
7
【云原生 | Kubernetes篇】Kubernetes基础入门(三)
8
【云原生 | Kubernetes篇】深入了解Kubernetes(k8s)Service(十一)
9
【云原生 | Kubernetes篇】深入了解Ingress(十二)
10
【云原生 | Kubernetes篇】Ingress案例实战(十三)
11
【云原生 | Kubernetes篇】Kubernetes 网络策略(NetworkPolicy)(十四)
12
【云原生 | Kubernetes篇】Kubernetes 配置(十五)
13
【云原生 | Kubernetes篇】Kubernetes(k8s)临时存储(十六)
14
【云原生 | Kubernetes篇】Kubernetes(k8s)持久化(十七)
15
【云原生 | Kubernetes篇】自建高可用k8s集群前置概念与操作(十八)
16
【云原生 | Kubernetes篇】自建高可用k8s集群搭建(十九)
17
【云原生 | Kubernetes篇】Kubernetes原理与安装(二)
18
云原生(二十九) | Kubernetes篇之自建高可用k8s集群优化
19
云原生(三十) | Kubernetes篇之应用商店-Helm介绍
20
云原生(三十三) | Kubernetes篇之平台存储系统部署
21
云原生(三十一) | Kubernetes篇之平台基本预装资源
22
云原生(三十二) | Kubernetes篇之平台存储系统介绍
23
云原生(三十四) | Kubernetes篇之平台存储系统实战
24
云原生(三十五) | Prometheus入门和安装
25
云原生(三十六) | Kubernetes篇之Harbor入门和安装
清单首页kube文章详情

云原生(二十九) | Kubernetes篇之自建高可用k8s集群优化

​自建高可用k8s集群优化

一、Docker配置优化

代码语言:javascript
复制
# 所有节点执行
// max-concurrent-downloads: 最大并发下载
// "max-concurrent-uploads": 最大并发上传
// log-opts: 日志设置,单文件最大,最大几个文件
// 容器的日志都在 /var/lib/docker/containers/容器名/xxx.log
// "live-restore": 停机保活
vi /etc/docker/daemon.json  

{
 "registry-mirrors": [
    "https://82m6ar63.mirror.aliyuncs.com"
  ],
 "exec-opts": ["native.cgroupdriver=systemd"],
 "max-concurrent-downloads": 10,
 "max-concurrent-uploads": 5,
 "log-opts": {
   "max-size": "300m",
   "max-file": "2"
 },
 "live-restore": true
}

代码语言:javascript
复制
systemctl daemon-reload && systemctl restart docker

二、优化kubelet

可参照官方文档: Kubelet 配置 (v1beta1) | Kubernetes

代码语言:javascript
复制
vi /etc/kubernetes/kubelet-conf.yml

代码语言:javascript
复制
# kubeReserved: kubelet预留资源
kubeReserved:
  cpu: "500m"
  memory: 300m
  ephemeral-storage: 3Gi
systemReserved:
  cpu: "200m"
  memory: 500m
  ephemeral-storage: 3Gi

验证集群kube-proxy使用ipvs模式工作; 10249是每个节点kube-proxy的metrics信息端口,可以访问/proxyMode或者/metrics等

代码语言:javascript
复制
curl 127.0.0.1:10249/proxyMode

三、时区问题

很多应用镜像时区都是UTC,而不是本机时间(当然,前提是本机时间是对的,云服务器不存在这个问题)

我们不用每一个Pod都设置挂载本地时间

代码语言:javascript
复制
apiVersion: settings.k8s.io/v1alpha1
kind: PodPreset
metadata:
  name: allow-localtime
  namespace: spinnaker
spec:
  selector:
    matchLabels:
  volumeMounts:
    - mountPath: /etc/localtime
      name: localtime
  volumes:
    - name: localtime
      hostPath:
        path: etc/localtime

代码语言:javascript
复制
kubectl apply -f xxx.yaml

docker hub下载来的几乎所有Pod都是UTC时间。

java -- Pod -- UTC

这个需要开启特性门控

代码语言:javascript
复制
vi /usr/lib/systemd/system/kube-apiserver.service


# 1、添加 --runtime-config=settings.k8s.io/v1alpha1=true
# 2、添加 --enable-admission-plugins中加入 PodPreset

systemctl daemon-reload && systemctl restart kube-apiserver

可惜此特性在 1.20以后废弃了。 PodPreset(Pod 预设置)的功能从 v1.11 版本开始出现,但是又在 v1.20 版本取消。

所以以后,使用Pod标准模板。挂载时区

代码语言:javascript
复制
        volumeMounts:
        - name: localtime
          mountPath: /etc/localtime
      volumes:
        - name: localtime
          hostPath:
            path: /usr/share/zoneinfo/Asia/Shanghai
下一篇
举报
领券