经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » Kubernetes » 查看文章
使用kubeadm安装kubernetes高可用集群
来源:cnblogs  作者:ThrownBug  时间:2019/3/13 8:44:44  对本文有异议
kubeadm安装kubernetes高可用集群搭建 
第一步:首先搭建etcd集群
yum install -y etcd
  1. 配置文件 /etc/etcd/etcd.conf
    ETCD_NAME=infra1
  2. ETCD_DATA_DIR="/var/lib/etcd"
  3. ETCD_LISTEN_PEER_URLS="https://172.20.0.113:2380"
  4. ETCD_LISTEN_CLIENT_URLS="https://172.20.0.113:2379"
  5. #[cluster]
  6. ETCD_INITIAL_ADVERTISE_PEER_URLS="https://172.20.0.113:2380"
  7. ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
  8. ETCD_ADVERTISE_CLIENT_URLS="https://172.20.0.113:2379,http://127.0.0.1:2379"
    #配置集群IP
  1. ETCD_INITIAL_CLUSTER="infra1=http://172.20.0.113:2380,infra2=http://172.20.0.114:2380,infra3=http://172.20.0.115:2380"
    第二步:安装keepalived虚拟IP代理
    yum install -y keepalived
  1. # 添加以下内容
  2. net.ipv4.ip_forward = 1
  3. net.ipv4.ip_nonlocal_bind = 1
  4. # 验证并生效
  5. $ sysctl -p
  6. # 验证是否生效
  7. $ cat /proc/sys/net/ipv4/ip_forward

配置文件 /etc/keepalived/keepalived.conf
  1. ! Configuration File for keepalived
  2. global_defs {
  3. notification_email {
  4. }
  5. router_id <cluster-difference-name>
  6. }
  7. vrrp_script check_haproxy {
  8. # 自身状态检测
  9. script "killall -0 haproxy"
  10. interval 3
  11. weight 5
  12. }
  13. vrrp_instance haproxy-vip {
  14. # 使用单播通信,默认是组播通信
  15. unicast_src_ip 192.168.1.137
  16. unicast_peer {
  17. 192.168.1.138
  18. }
  19. # 初始化状态
  20. state MASTER(BACKUP)
  21. # 虚拟ip 绑定的网卡 (这里根据你自己的实际情况选择网卡)
  22. interface eth0
  23. # 此ID 要与Backup 配置一致
  24. virtual_router_id 51<cluster id same>
  25. # 默认启动优先级,要比Backup 大点,但要控制量,保证自身状态检测生效
  26. priority 100
  27. advert_int 1
  28. authentication {
  29. auth_type PASS
  30. auth_pass 1111
  31. }
  32. virtual_ipaddress {
  33. # 虚拟ip 地址
  34. 192.168.1.139
  35. }
  36. track_script {
  37. check_k8s
  38. }
  39. }
  40. virtual_server 192.168.1.139 80 {
  41. delay_loop 5
  42. lvs_sched wlc
  43. lvs_method NAT
  44. persistence_timeout 1800
  45. protocol TCP
  46. real_server 192.168.1.137 80 {
  47. weight 1
  48. TCP_CHECK {
  49. connect_port 80
  50. connect_timeout 3
  51. }
  52. }
  53. }
  54. virtual_server 192.168.1.139 443 {
  55. delay_loop 5
  56. lvs_sched wlc
  57. lvs_method NAT
  58. persistence_timeout 1800
  59. protocol TCP
  60. real_server 192.168.1.137 443 {
  61. weight 1
  62. TCP_CHECK {
  63. connect_port 443
  64. connect_timeout 3
  65. }
  66. }
  67. }
    第三步:安装docker、准备必要镜像
    关闭防火墙
    systemctl stop firewalld
    关闭SELinux
    setenforce 0
    sed -i -e 's/SELINUX=enforcing/SELINUX=disable/g' /etc/sysconfig/selinux
    安装docker
    yum install -y docker
    #镜像包
    etcd-amd64_v3.1.11
    flannel:v0.9.1-amd64_1.14.7
    k8s-dns-dnsmasq-nanny-amd64_1.14.7
    k8s-dns-sidecar-amd64_1.14.7
    kube-apiserver-amd-v1.9.2
    kube-controller-manager-amd64-v1.9.2
    kube-proxy-amd64-v1.9.2
    kube-scheduler-amd64-v1.9.2
    pause-amd64_3.0

第四步:配置kubeadm-config.yaml
  1. apiVersion: kubeadm.k8s.io/v1alpha1
  2. kind: MasterConfiguration
  3. api:
  4. advertiseAddress: 192.168.4.24
  5. etcd:
  6. endpoints:
  7. - http://192.168.4.24:2379
  8. - http://192.168.4.25:2379
  9. - http://192.168.4.26:2379
  1. imageRepository: k8s.gcr.io #配置私有仓库
networking: podSubnet: 10.1.0.0/16 #和flanneld的网段一致
apiServerCertSANs:
    - 192.168.4.24
    - 192.168.4.25
    - 192.168.4.26
    - 192.168.4.27
    - 192.168.4.40
apiServerExtraArgs:
   endpoint-reconciler-type: lease EOL ##初始化kubernetes集群
kubeadm init --config kubeadm-config.yaml

注意:如果flanneld使用服务安装则需要添加
  1. etcdctl --endpoints=https://172.20.0.113:2379,https://172.20.0.114:2379,https://172.20.0.115:2379 --ca-file=/etc/kubernetes/ssl/ca.pem --cert-file=/etc/kubernetes/ssl/kubernetes.pem --key-file=/etc/kubernetes/ssl/kubernetes-key.pem mkdir /kube-centos/network

  1. etcdctl --endpoints=https://172.20.0.113:2379,https://172.20.0.114:2379,https://172.20.0.115:2379 --ca-file=/etc/kubernetes/ssl/ca.pem --cert-file=/etc/kubernetes/ssl/kubernetes.pem --key-file=/etc/kubernetes/ssl/kubernetes-key.pem mk /kube-centos/network/config '{"Network":"172.30.0.0/16","SubnetLen":24,"Backend":{"Type":"vxlan"}}'
     错误NetworkPlugin cni failed to set up pod
    停掉集群删除flannel,避免网络污染
  rm -rf /var/lib/cni/flannel/* && rm -rf /var/lib/cni/networks/cbr0/* && ip link delete cni0 
  rm -rf /var/lib/cni/networks/cni0/*

原文链接:http://www.cnblogs.com/Javaknowledge/p/10520022.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号