Kubernetes 集群性能优化

 

 

传统架构

image

 

可以在每个worker节点都配置各自的负载均衡服务,从而避免集中的负载均衡器的性能瓶颈

 

image

 

 

范例:配置每个节点的Proxy

#查看worker节点连接api server的地址信息为https://kubeapi.org:6443。因此实现基于此域名实现负载均衡

cat /etc/kubernetes/kubelet.conf

[root@node1 ~]# 
[root@node1 ~]# cat /etc/kubernetes/kubelet.conf 
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURCVENDQWUyZ0F3SUJBZ0lJS0lCQitnTGhRYzR3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TmpBNE1ETXdOalEzTlRCYUZ3MHpOakEzTXpFd05qVXlOVEJhTUJVeApFekFSQmdOVkJBTVRDbXQxWW1WeWJtVjBaWE13Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLCkFvSUJBUUNyMTFCeml1aXB3cTgyMjJNZ1FHeVpVTFppenJ4NGpTaUp5bE5uTXZkRmtORkVKU2M5OUhiUlljVDkKK2Q1cXhiS0RGVEJqWTB0anV5VUNBTWZ6RHB6RU5DNE5hZ0ZpbGZrcVVJQk5CdGNYS1AyeXhvVVVuOG5UNXBGcAovK2dGSEhWcWVIVHkyY1RreTAwSGdZdDhvamZjU3Y4QXNEeS9pYS9yUlpYUlZLTFpTYkZLTE1KckN3YUw2V1pRCnlreGlMcy9DeWR5cEsvd1p6TmtDMmt5bUJHUFNQTktQdTFKdkcySGdEdmYvWXRLN2FrY3Q0WlJLSXh4TTgwaG8KMU1YR1RBUllTVnY4ZXFKa3VRVHFRWXNFMHZVc09JQUtCQzZjMkpyK0h3L3M2NmQ0eWdrek9obDZUa05QZXJ6Qwo5Nkw5aVhMRVlpNlR5NFlrZFMrNG5XSFFxSVhOQWdNQkFBR2pXVEJYTUE0R0ExVWREd0VCL3dRRUF3SUNwREFQCkJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJRaWZ1VW5kaEMwUG5HQlJGUTY5b3Q3eWttOVpUQVYKQmdOVkhSRUVEakFNZ2dwcmRXSmxjbTVsZEdWek1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ1MxTHVHU1pQZgpoYVNCTjF2QzFTRE1DWDU2SUpMVGlXRDFtQkhjcXZsUlhBVnNjTnBMRWNxV2l2STdpL0RWYjUwQjYwNWd4dk9oCkdISFIxb3JSL21wOHJ3cER0SjVzclZyVFgvR2dVOXJlSnV5ZXdSa0pqTUlFUnNnVSthTlc2OXVTVEVNODFpZEMKZ25ZOXhsQXlnL2dVQ1VNOHFoWHFicGlRZGN6UWNYWEl0SVZwWkl4QWIxaU1KaGFTVjI5VTFwR1A4V2F6QlUvNgpQVFRlcGUwc3VFWHhyTTZRdDU0UFh6UVJvTkw2Vk0xRzlxbHBPdzZwa0ptVkx1M1FtbDE1OHdDWmFrNkFmNUdRCjVhWEttRWNxVkhmc1U3eCs0aCs4aUdIQXg4NFMyT05FWXBDRjNFVGxPK2VVQWhLelNvWGsvZUx2SnNDQXVBTEcKWElCZlJHTjd2WFRNCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
    server: https://kubeapi.org:6443
  name: default-cluster
contexts:
- context:
    cluster: default-cluster
    namespace: default
    user: default-auth
  name: default-context
current-context: default-context
kind: Config
users:
- name: default-auth
  user:
    client-certificate: /var/lib/kubelet/pki/kubelet-client-current.pem
    client-key: /var/lib/kubelet/pki/kubelet-client-current.pem

 

#在每个worker节点修改API域名指定自已

[root@node1 ~]# cat /etc/hosts    
127.0.0.1   localhost kubeapi.org kubeapi
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
#192.168.3.60 kubeapi.org kubeapi
192.168.3.60 master1.org master1
192.168.3.61 master2.org master2
192.168.3.62 master3.org master3
192.168.3.63 node1.org node1
192.168.3.64 node2.org node2
192.168.3.65 node3.org node3
192.168.3.66 ha1.org ha1
192.168.3.67 ha2.org ha2

 

#方法1:安装hapoxy实现负载均衡服务

dnf -y install haproxy

 

vi /etc/haproxy/haproxy.cfg

#在文件最后添加下面行

listen stats
   mode http
   bind 0.0.0.0:8888
   stats enable
   log global
   stats uri /status
   stats auth admin:123456
    
listen k8s
   bind 127.0.0.1:6443
   mode tcp
   server master1 master1.org:6443 check
   server master2 master2.org:6443 check
   server master3 master3.org:6443 check

 

 

[root@node1 haproxy]# cat /etc/haproxy/haproxy.cfg
#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
    log         127.0.0.1 local2
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon
    stats socket /var/lib/haproxy/stats
    ssl-default-bind-ciphers PROFILE=SYSTEM
    ssl-default-server-ciphers PROFILE=SYSTEM

#---------------------------------------------------------------------
# Defaults
#---------------------------------------------------------------------
defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000

#---------------------------------------------------------------------
# Frontend
#---------------------------------------------------------------------
frontend main
    bind *:5000
    acl url_static       path_beg       -i /static /images /javascript /stylesheets
    acl url_static       path_end       -i .jpg .gif .png .css .js
    use_backend static          if url_static
    default_backend             app

#---------------------------------------------------------------------
# Backend static
#---------------------------------------------------------------------
backend static
    balance     roundrobin
    server      static 127.0.0.1:4331 check

#---------------------------------------------------------------------
# Backend app
#---------------------------------------------------------------------
backend app
    balance     roundrobin
    server  app1 127.0.0.1:5001 check
    server  app2 127.0.0.1:5002 check
    server  app3 127.0.0.1:5003 check
    server  app4 127.0.0.1:5004 check

#---------------------------------------------------------------------
# Stats page
#---------------------------------------------------------------------
listen stats
    mode http
    bind 0.0.0.0:8888
    stats enable
    log global
    stats uri /status
    stats auth admin:123456

#---------------------------------------------------------------------
# K8s API Server
#---------------------------------------------------------------------
listen k8s
    bind 127.0.0.1:6443
    mode tcp
    server master1 master1.org:6443 check
    server master2 master2.org:6443 check
    server master3 master3.org:6443 check

 

systemctl restart haproxy

systemctl status haproxy

systemctl enable haproxy

haproxy -c -f /etc/haproxy/haproxy.cfg

 

 

 浏览器访问: http://192.168.3.63:8888/status ,可以看到下面界面

 

scp /etc/haproxy/haproxy.cfg 192.168.3.64:/etc/haproxy/haproxy.cfg

scp /etc/haproxy/haproxy.cfg 192.168.3.65:/etc/haproxy/haproxy.cfg

systemctl restart haproxy

systemctl status haproxy

systemctl enable haproxy

haproxy -c -f /etc/haproxy/haproxy.cfg

 浏览器访问: http://192.168.3.64:8888/status ,可以看到下面界面

 浏览器访问: http://192.168.3.65:8888/status ,可以看到下面界面

 

#创建Pod测试正常

kubectl create deployment myapp --image registry.cn-beijing.aliyuncs.com/wangxiaochun/pod-test:v0.1 --replicas 3

kubectl get pod -o wide

 

[root@master1 ~]# kubectl get pod -o wide
NAME                    READY   STATUS    RESTARTS   AGE   IP           NODE        NOMINATED NODE   READINESS GATES
myapp-55d868944-bgqbb   1/1     Running   0          25s   10.244.2.6   node2.org   <none>           <none>
myapp-55d868944-g4xw2   1/1     Running   0          25s   10.244.1.6   node1.org   <none>           <none>
myapp-55d868944-w8qkx   1/1     Running   0          25s   10.244.3.4   node3.org   <none>           <none>

 

 
posted @ 2026-08-03 18:18  minger_lcm  阅读(6)  评论(0)    收藏  举报