范县网站建设价格,建设培训考试服务网站,python是做什么的,国外网站网址本次部署说明 在上一篇文章中#xff0c;就已经完成了二进制k8s集群部署的搭建#xff0c;但是单机master并不适用于企业的实际运用#xff08;因为单机master中#xff0c;仅仅只有一台master作为节点服务器的调度指挥#xff0c;一旦宕机。就意味着整个集群的瘫痪#… 本次部署说明 在上一篇文章中就已经完成了二进制k8s集群部署的搭建但是单机master并不适用于企业的实际运用因为单机master中仅仅只有一台master作为节点服务器的调度指挥一旦宕机。就意味着整个集群的瘫痪所以成熟的k8s的集群一定要考虑到master的高可用。企业的运用一般至少存在两台master及其以上的部署本次将根据前面的部署再添加一台master三个master或者更多也可以根据本次添加步骤重复添加。添加master后我们会将借助keepalivednginx的架构来实现高可用的master【也可以使用haproxykeepalived或则是keepalivedlvs不推荐步骤过于复杂】
除此之外我们还将搭建出k8s的ui管理界面
本次部署的架构组件 架构说明
node节点的kubelet只能对接一个master节点的apiserver不可能同时对接多个master节点的apiserver。简而言之node节只能有一个master来领导。
kubelet和kube-proxy是通过kubelet.kubeconfig和kube-proxy.kubeconfig文件中的server参数进行对接 master节点的。
所以在多master节点的环境下需要有nginx负载均衡器来进行调度而且需要进行keepalived高可用的构建(主从两个节点) 防止主节点宕机导致整个k8s集群的不可用。 1. 新master节点的搭建 1.1 对master02 进行初始化配置 #关闭防火墙 systemctl stop firewalld systemctl disable firewalld iptables -F iptables -t nat -F iptables -t mangle -F iptables -X #关闭selinux setenforce 0 sed -i s/enforcing/disabled/ /etc/selinux/config #关闭swap swapoff -a sed -ri s/.*swap.*/#/ /etc/fstab #根据规划设置主机名 hostnamectl set-hostname master02 su #在master添加hosts(添加到整个k8s集群的主机上保证其他主机均有该映射) cat /etc/hosts EOF 192.168.73.105 master01 192.168.73.110 master02 192.168.73.106 node01 192.168.73.107 node02 EOF #调整内核参数 cat /etc/sysctl.d/k8s.conf EOF #开启网桥模式可将网桥的流量传递给iptables链 net.bridge.bridge-nf-call-ip6tables 1 net.bridge.bridge-nf-call-iptables 1 #关闭ipv6协议 net.ipv6.conf.all.disable_ipv61 net.ipv4.ip_forward1 EOF sysctl --system #时间同步 yum install ntpdate -y ntpdate ntp.aliyun.com #将时间同步的操作添加到计划性任务确保所有节点保证时间的同步 crontab -e */30 * * * * /usr/sbin/ntpdate ntp.aliyun.com crontab -l 1.2 将master01的配置移植到master02 ##------------ 1、 master01节点拷贝文件到master02 ------------------------------- #从 master01 节点上拷贝证书文件、各master组件的配置文件和服务管理文件到 master02 节点 scp -r /opt/etcd/ root192.168.73.110:/opt/ scp -r /opt/kubernetes/ root192.168.73.110:/opt/ scp /usr/lib/systemd/system/{kube-apiserver,kube-controller-manager,kube-scheduler}.service root192.168.73.110:/usr/lib/systemd/system/ scp -r /root/.kube/ master02:/root/ ##----------- 2、 master02节点修改配置文件并启动相关服务------------------------- #修改配置文件kube-apiserver中的IP vim /opt/kubernetes/cfg/kube-apiserver KUBE_APISERVER_OPTS--logtostderrtrue \ #输出日志false表示标准错误不输出到屏幕而是输出到日志中。true表示标准错误会输出到屏幕。 --v4 \ #日志级别 --etcd-servershttps://192.168.73.105:2379,https://192.168.73.106:2379,https://192.168.73.107:2379 \ #etcd节点的IP通信地址 --bind-address192.168.73.110 \ #修改当前绑定的内网IP监听的地址 --secure-port6443 \ #基于HPPTS开放端口 --advertise-address192.168.73.110 \ #修改内网通告地址让其他node节点地址通信 ...... #在 master02 节点上启动各服务并设置开机自启 systemctl enable --now kube-apiserver.service systemctl enable --now kube-controller-manager.service systemctl enable --now kube-scheduler.service #将可执行文件创建软链接 ln -s /opt/kubernetes/bin/* /usr/local/bin/ #查看node节点状态 kubectl get nodes kubectl get nodes -o wide #-owide输出额外信息对于Pod将输出Pod所在的Node名 #此时在master02节点查到的node节点状态仅是从etcd查询到的信息而此时node节点实际上并未与master02节点建立通信连接因此需要使用一个VIP把node节点与master节点都关联起来 2.负载均衡的部署 #配置load balancer集群双机热备负载均衡nginx实现负载均衡keepalived实现双机热备 #----------------- 1、两台负载均衡器配置nginx ------------------------------------- #配置nginx的官方在线yum源配置本地nginx的yum源 cat /etc/yum.repos.d/nginx.repo EOF [nginx] namenginx repo baseurlhttp://nginx.org/packages/centos/7/$basearch/ gpgcheck0 EOF yum install nginx -y #修改nginx配置文件配置四层反向代理负载均衡指定k8s群集2台master的节点ip和6443端口 vim /etc/nginx/nginx.conf events { worker_connections 1024; } #添加 stream { log_format main $remote_addr $upstream_addr - [$time_local] $status $upstream_bytes_sent; access_log /var/log/nginx/k8s-access.log main; upstream k8s-apiserver { server 192.168.73.105:6443; #master01 server 192.168.73.110:6443; #master02 } server { listen 6443; proxy_pass k8s-apiserver; } } http { ...... #检查配置文件语法 nginx -t #启动nginx服务查看已监听6443端口 systemctl start nginx systemctl enable nginx ss -lntp|grep nginx #------------------ 2、两台负载均衡器配置keepalived ------------------------------ #部署keepalived服务 yum install keepalived -y #修改keepalived配置文件 vim /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs { router_id nginx_master } vrrp_script check_nginx { script /etc/nginx/check_nginx.sh #指定检测脚本的路径并且该脚本充当心跳检测脚本 } vrrp_instance VI_1 { state MASTER #指定状态为master节点109为BACKUP备用节点 interface ens33 virtual_router_id 51 priority 100 #108优先级为100 109为90优先级决定着主备的位置 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.73.66 } track_script { check_nginx #追踪脚本的进程 } } #将该文件 发送给备用调度器并且将其中的配置修改为备用调度器的属性 cd /etc/keepalived/ scp keepalived.conf root192.168.73.109:pwd #创建nginx状态检查脚本 vim /etc/nginx/check_nginx.sh #!/bin/bash killall -0 nginx /dev/null if [ $? -ne 0 ];then systemctl stop keepalived fi chmod x /etc/nginx/check_nginx.sh #为脚本增加执行权限 #将该脚本发送给备用调度器 cd /etc/nginx scp check_nginx.conf root192.168.73.109:pwd #两台主备调度器启动keepalived服务一定要先启动了nginx服务再启动keepalived服务 systemctl start keepalived systemctl enable keepalived ip addr #查看主节点的VIP是否生成 #---------------- 3、关闭主节点的nginx服务模拟故障测试keepalived----------------------- #关闭主节点lb01的Nginx服务模拟宕机观察VIP是否漂移到备节点 systemctl stop nginx ip addr systemctl status keepalived #此时keepalived被脚本杀掉了 #备节点查看是否生成了VIP ip addr #此时VIP漂移到备节点lb02 #恢复主节点 systemctl start nginx #先启动nginx systemctl start keepalived #再启动keepalived ip addr 3. k8s的web UI界面的搭建 //在 master01 节点上操作 #上传 recommended.yaml 文件到 /opt/k8s 目录中部署 CoreDNS cd /opt/k8s vim recommended.yaml #默认Dashboard只能集群内部访问修改Service为NodePort类型暴露到外部 kind: Service apiVersion: v1 metadata: labels: k8s-app: kubernetes-dashboard name: kubernetes-dashboard namespace: kubernetes-dashboard spec: ports: - port: 443 targetPort: 8443 nodePort: 30001 #添加 type: NodePort #添加 selector: k8s-app: kubernetes-dashboard #通过recommended.yaml资源配置清单使用kubectl apply创建资源-f指定资源配置清单文件 kubectl apply -f recommended.yaml #创建service account并绑定默认cluster-admin管理员集群角色 kubectl create serviceaccount dashboard-admin -n kube-system kubectl create clusterrolebinding dashboard-admin --clusterrolecluster-admin --serviceaccountkube-system:dashboard-admin #获取token值 kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk /dashboard-admin/{print $1}) #使用输出的token登录Dashboard访问node节点 https://192.168.73.106:30001