使用kubeadm安装kubernetes高可用集群
生活随笔
收集整理的這篇文章主要介紹了
使用kubeadm安装kubernetes高可用集群
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
kubeadm安裝kubernetes高可用集群搭建? 第一步:首先搭建etcd集群 yum install -y etcd 配置文件 /etc/etcd/etcd.conf
ETCD_NAME=infra1 ETCD_DATA_DIR="/var/lib/etcd" ETCD_LISTEN_PEER_URLS="https://172.20.0.113:2380" ETCD_LISTEN_CLIENT_URLS="https://172.20.0.113:2379"#[cluster] ETCD_INITIAL_ADVERTISE_PEER_URLS="https://172.20.0.113:2380" ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster" ETCD_ADVERTISE_CLIENT_URLS="https://172.20.0.113:2379,http://127.0.0.1:2379"
#配置集群IP
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
# 添加以下內容 net.ipv4.ip_forward = 1 net.ipv4.ip_nonlocal_bind = 1# 驗證并生效 $ sysctl -p # 驗證是否生效 $ cat /proc/sys/net/ipv4/ip_forward
配置文件 /etc/keepalived/keepalived.conf
! Configuration File for keepalived global_defs {notification_email {}router_id <cluster-difference-name> } vrrp_script check_haproxy {# 自身狀態檢測script "killall -0 haproxy"interval 3weight 5 } vrrp_instance haproxy-vip {# 使用單播通信,默認是組播通信unicast_src_ip 192.168.1.137unicast_peer {192.168.1.138}# 初始化狀態state MASTER(BACKUP)# 虛擬ip 綁定的網卡 (這里根據你自己的實際情況選擇網卡)interface eth0# 此ID 要與Backup 配置一致virtual_router_id 51<cluster id same># 默認啟動優先級,要比Backup 大點,但要控制量,保證自身狀態檢測生效priority 100 advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {# 虛擬ip 地址192.168.1.139}track_script {check_k8s} } virtual_server 192.168.1.139 80 {delay_loop 5lvs_sched wlclvs_method NATpersistence_timeout 1800protocol TCPreal_server 192.168.1.137 80 {weight 1TCP_CHECK {connect_port 80connect_timeout 3}} }virtual_server 192.168.1.139 443 {delay_loop 5lvs_sched wlclvs_method NATpersistence_timeout 1800protocol TCPreal_server 192.168.1.137 443 {weight 1TCP_CHECK {connect_port 443connect_timeout 3}} }
第三步:安裝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
apiVersion: kubeadm.k8s.io/v1alpha1 kind: MasterConfiguration api:advertiseAddress: 192.168.4.24 etcd:endpoints:- http://192.168.4.24:2379- http://192.168.4.25:2379- http://192.168.4.26:2379
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使用服務安裝則需要添加
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
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/*
ETCD_NAME=infra1 ETCD_DATA_DIR="/var/lib/etcd" ETCD_LISTEN_PEER_URLS="https://172.20.0.113:2380" ETCD_LISTEN_CLIENT_URLS="https://172.20.0.113:2379"#[cluster] ETCD_INITIAL_ADVERTISE_PEER_URLS="https://172.20.0.113:2380" ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster" ETCD_ADVERTISE_CLIENT_URLS="https://172.20.0.113:2379,http://127.0.0.1:2379"
#配置集群IP
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
# 添加以下內容 net.ipv4.ip_forward = 1 net.ipv4.ip_nonlocal_bind = 1# 驗證并生效 $ sysctl -p # 驗證是否生效 $ cat /proc/sys/net/ipv4/ip_forward
配置文件 /etc/keepalived/keepalived.conf
! Configuration File for keepalived global_defs {notification_email {}router_id <cluster-difference-name> } vrrp_script check_haproxy {# 自身狀態檢測script "killall -0 haproxy"interval 3weight 5 } vrrp_instance haproxy-vip {# 使用單播通信,默認是組播通信unicast_src_ip 192.168.1.137unicast_peer {192.168.1.138}# 初始化狀態state MASTER(BACKUP)# 虛擬ip 綁定的網卡 (這里根據你自己的實際情況選擇網卡)interface eth0# 此ID 要與Backup 配置一致virtual_router_id 51<cluster id same># 默認啟動優先級,要比Backup 大點,但要控制量,保證自身狀態檢測生效priority 100 advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {# 虛擬ip 地址192.168.1.139}track_script {check_k8s} } virtual_server 192.168.1.139 80 {delay_loop 5lvs_sched wlclvs_method NATpersistence_timeout 1800protocol TCPreal_server 192.168.1.137 80 {weight 1TCP_CHECK {connect_port 80connect_timeout 3}} }virtual_server 192.168.1.139 443 {delay_loop 5lvs_sched wlclvs_method NATpersistence_timeout 1800protocol TCPreal_server 192.168.1.137 443 {weight 1TCP_CHECK {connect_port 443connect_timeout 3}} }
第三步:安裝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
apiVersion: kubeadm.k8s.io/v1alpha1 kind: MasterConfiguration api:advertiseAddress: 192.168.4.24 etcd:endpoints:- http://192.168.4.24:2379- http://192.168.4.25:2379- http://192.168.4.26:2379
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使用服務安裝則需要添加
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
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/*
轉載于:https://www.cnblogs.com/Javaknowledge/p/10520022.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的使用kubeadm安装kubernetes高可用集群的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [UWP]使用Picker实现一个简单的
- 下一篇: 看后端程序员调试CORS的姿势