kubeadm部署k8s:v1.16.3高可用集群

网友投稿 259 2022-10-31

kubeadm部署k8s:v1.16.3高可用集群

总目录索引:K8s 从入门到放弃系列

一、环境说明

cat  /etc/hosts192.168.10.11  node1        #master1192.168.10.14  node4        #master2192.168.10.15  node5        #master3

备注:由于是在自己虚拟机操作,因此只部署了master节点,worker节点执行的操作我会一并写出,按照操作即可。

二、环境配置

1、设置阿里云yum源(可选)

curl -o /etc/yum.repos.d/CentOS-Base.repo -rf /var/cache/yum && yum makecache

2、安装依赖包

yum install -y epel-release conntrack ipvsadm ipset jq sysstat curl iptables libseccomp

3、关闭防火墙

systemctl stop firewalld && systemctl disable firewalldiptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat && iptables -P FORWARD ACCEPT

4、关闭SELinux

setenforce 0sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

5、关闭 swap 分区

swapoff -ased -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

6、加载内核模块

cat > /etc/sysconfig/modules/ipvs.modules <

7、设置内核参数

cat << EOF | tee /etc/sysctl.d/k8s.confnet.bridge.bridge-nf-call-iptables=1net.bridge.bridge-nf-call-ip6tables=1net.ipv4.ip_forward=1net.ipv4.tcp_tw_recycle=0vm.swappiness=0vm.overcommit_memory=1vm.panic_on_oom=0fs.inotify.max_user_watches=89100fs.file-max=52706963fs.nr_open=52706963net.ipv6.conf.all.disable_ipv6=1net.netfilter.nf_conntrack_max=2310720EOFsysctl -p /etc/sysctl.d/k8s.conf

8、安装Docker

yum install -y yum-utils device-mapper-persistent-data lvm2yum-config-manager --add-repo makecache fastyum install -y docker-ce-18.09.6systemctl start dockersystemctl enable docker

安装完成后配置启动时的命令,否则docker会将iptables FORWARD chain的默认策略设置为DROP

另外Kubeadm建议将systemd设置为cgroup驱动,所以还要修改daemon.json

sed -i "13i ExecStartPost=/usr/sbin/iptables -P FORWARD ACCEPT" /usr/lib/systemd/system/docker.servicetee /etc/docker/daemon.json <<-'EOF'{  "exec-opts": ["native.cgroupdriver=systemd"]  }EOFsystemctl daemon-reloadsystemctl restart docker

9、安装kubeadm和kubelet

cat < /etc/yum.repos.d/kubernetes.repo[kubernetes]name=Kubernetesbaseurl=makecache fastyum install -y kubelet kubeadm kubectlsystemctl enable kubeletvim /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf#设置kubelet的cgroup driverKUBELET_KUBECONFIG_ARGS=--cgroup-driver=systemdsystemctl daemon-reloadsystemctl restart kubelet.service

10、拉取所需镜像

kubeadm config images list | sed -e 's/^/docker pull /g' -e 's#k8s.gcr.io#registry.cn-hangzhou.aliyuncs.com/google_containers#g' | sh -xdocker images | grep registry.cn-hangzhou.aliyuncs.com/google_containers | awk '{print "docker tag",$1":"$2,$1":"$2}' | sed -e 's/registry.cn-hangzhou.aliyuncs.com\/google_containers/k8s.gcr.io/2' | sh -xdocker images | grep registry.cn-hangzhou.aliyuncs.com/google_containers | awk '{print "docker rmi """$1""":"""$2}' | sh -x

三、安装keepalived和haproxy

Kubernetes的高可用主要指的是控制平面的高可用,简单说就是有多套Master节点组件和Etcd组件,工作节点通过负载均衡连接到各Master。

将etcd与Master节点组件混布在一起:

Etcd混布方式:    所需机器资源少    部署简单,利于管理    容易进行横向扩展    风险大,一台宿主机挂了,master和etcd就都少了一套,集群冗余度受到的影响比较大。

3.1master安装

yum install -y keepalived haproxy

3.2修改haproxy配置文件:(三个节点都一致)

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 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 listen stats     bind                 *:1080     stats auth           admin:awesomePassword     stats refresh        5s     stats realm          HAProxy\ Statistics     stats uri            /admin?stats frontend kubernetes-apiserver    mode  tcp    bind  *:8443    option   tcplog    default_backend     kubernetes-apiserver backend kubernetes-apiserver     balance     roundrobin     mode        tcp     server  node1 192.168.10.11:6443 check inter 5000 fall 2 rise 2 weight 1     server  node4 192.168.10.14:6443 check inter 5000 fall 2 rise 2 weight 1     server  node5 192.168.10.15:6443 check inter 5000 fall 2 rise 2 weight 1

3.3修改keepalived的配置文件

节点一:

! Configuration File for keepalived global_defs {    router_id LVS_DEVEL } vrrp_script check_haproxy {     script "/etc/keepalived/check_haproxy.sh"     interval 3     weight -2     fall 10     rise 2 } vrrp_instance VI_1 {     state MASTER     interface ens33         #宿主机物理网卡名称     virtual_router_id 51     priority 100     advert_int 1     authentication {         auth_type PASS         auth_pass 1111     }     virtual_ipaddress {         192.168.10.16      #VIP要与自己的IP在同一网段     }         track_script {             check_haproxy     } }

节点二:

! Configuration File for keepalived global_defs {    router_id LVS_DEVEL } vrrp_script check_haproxy {     script "/etc/keepalived/check_haproxy.sh"     interval 3     weight -2     fall 10     rise 2 } vrrp_instance VI_1 {     state BACKUP     interface ens33     virtual_router_id 51     priority 80     advert_int 1     authentication {         auth_type PASS         auth_pass 1111     }     virtual_ipaddress {         192.168.10.16     }         track_script {             check_haproxy     } }

节点三:

! Configuration File for keepalived global_defs {    router_id LVS_DEVEL } vrrp_script check_haproxy {     script "/etc/keepalived/check_haproxy.sh"     interval 3     weight -2     fall 10     rise 2 } vrrp_instance VI_1 {     state BACKUP     interface ens33     virtual_router_id 51     priority 60     advert_int 1     authentication {         auth_type PASS         auth_pass 1111     }     virtual_ipaddress {         192.168.10.16     }         track_script {             check_haproxy     } }

在三个master执行:

cat > /etc/keepalived/check_haproxy.sh < /dev/null if [[ \$? != 0 ]];then         echo "haproxy is down,close the keepalived"         systemctl stop keepalived fi EOF chmod +x /etc/keepalived/check_haproxy.sh systemctl enable keepalived && systemctl start keepalived  systemctl enable haproxy && systemctl start haproxy systemctl status keepalived && systemctl status haproxy #如果keepalived状态不是running,则从新执行 systemctl  restart  keepalived

即可在master节点看到:

到此keepalived和haproxy准备完成。

四、初始化集群

kubeadm init \  --kubernetes-version=v1.16.3 \  --pod-network-cidr=10.244.0.0/16 \  --apiserver-advertise-address=192.168.10.11 \  --control-plane-endpoint 192.168.10.16:8443 --upload-certs

则表示初始化成功

1.为需要使用kubectl的用户进行配置

mkdir -p $HOME/.kubecp -i /etc/kubernetes/admin.conf $HOME/.kube/configchown $(id -u):$(id -g) $HOME/.kube/config

2.安装Pod Network

安装canal网络插件

wget join 192.168.10.16:8443 --token 4r7i1t.pu099ydf73ju2dq0 \    --discovery-token-ca-cert-hash sha256:65547a2b5633ea663cf9edbde3a65c3d1eb4d0f932ac2c6c6fcaf77dcd86a55f \    --control-plane --certificate-key e8aeb23b165bf87988b4b30a80635d35e45a14d958a10ec616190665c835dc6a

在任意节点执行:

kubectl  get  node

5.进行测试master高可用:

down掉master1

在其他节点查看

五、加入worker节点

kubeadm join 192.168.10.16:8443 --token 4r7i1t.pu099ydf73ju2dq0 \    --discovery-token-ca-cert-hash sha256:65547a2b5633ea663cf9edbde3a65c3d1eb4d0f932ac2c6c6fcaf77dcd86a55f

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:第四章 helm 轻松完爆 chart
下一篇:为什么苹果多年坚持lighting接口数据线?
相关文章

 发表评论

暂时没有评论,来抢沙发吧~