当前位置: 首页 > article >正文

k8s 二进制部署安装(三)

目录

部署Calico

Calico 工作原理

部署Calico

部署CoreDNS

负载均衡部署

部署dashboard


部署Calico

安装步骤来到 CNI 网络组件 ,在(二)中我们安装了flannel,现在我们要尝试安装另一网络组件Calico

calico 不使用隧道或NAT来实现转发,而是把Host 当作 Internet 中的路由器,使用BGP同步路由,并使用iptables来做安全访问策略,完成跨Host转发。

Calico 主要由三个部分组成:

Calico CNI插件:主要负责与kubernetes对接,供kubelet调用使用。

Felix:负责维护宿主机上的路由规则、FIB转发信息库等。

BIRD:负责分发路由规则,类似路由器。

Confd:配置管理组件。

Calico 工作原理

Calico 是通过路由表来维护每个 pod 的通信。Calico 的 CNI 插件会为每个容器设置一个 veth pair 设备, 然后把另一端接入到宿主机网络空间,由于没有网桥,CNI 插件还需要在宿主机上为每个容器的 veth pair 设备配置一条路由规则, 用于接收传入的 IP 包。 有了这样的 veth pair 设备以后,容器发出的 IP 包就会通过 veth pair 设备到达宿主机,然后宿主机根据路由规则的下一跳地址, 发送给正确的网关,然后到达目标宿主机,再到达目标容器。

部署Calico

在部署Calico之前,我们需要完全清除我们部署的flannel 

kubectl delete -f kube-flannel.yml

在 master01 节点上操作

上传 calico.yaml 文件到 /opt/k8s 目录中,部署 CNI 网络

或者下载calico.yaml文件

wget https://docs.projectcalico.org/v3.23/manifests/calico.yaml --no-check-certificate

sed -i 's#docker.io/##g' calico.yaml               移除docker.io/ 前缀

cd /opt/k8s

vim calico.yaml

#3878行,将 ip 改为10.244.0.0/16

应用calico.yaml

kubectl apply -f calico.yaml

我这里下面有unchanged是因为中间有一个报错

查看kube-system 命名空间下的所有正在运行的pod

kubectl get pods -n kube-system

部署CoreDNS

PS:CoreDNS可以为集群中的 service 资源创建一个域名 与 IP 的对应关系解析

在node 节点上操作

上传 coredns.tar 到/opt 目录种

cd /opt 

docker load -i coredns.tar

在 master01 上操作

上传 coredns.yaml 文件到 /opt/k8s 目录中,部署 CoreDNS

cd /opt/k8s

应用coredns

kubectl apply -f coredns.yaml

列出位于 kube-system 命名空间的所有pod

kubectl get pods -n kube-system

在master02 节点部署

(把 master01 节点上拷贝证书文件、各master组件的配置文件和服务管理文件到 master02 节点 ,暂且还在 master01 上操作)

scp -r /opt/etcd/ root@172.16.233.102:/opt/

scp -r /opt/kubernetes/ root@172.16.233.102:/opt

scp -r /root/.kube root@172.16.233.102:/root

scp /usr/lib/systemd/system/{kube-apiserver,kube-controller-manager,kube-scheduler}.service root@172.16.233.102:/usr/lib/systemd/system/

修改配置文件kube-apiserver中的IP

vim /opt/kubernetes/cfg/kube-apiserver

随后在master02 节点上启动各服务,并设置开机自启

systemctl start kube-apiserver.service

systemctl enable kube-apiserver.service

systemctl start kube-controller-manager.service

systemctl enable kube-controller-manager.service

systemctl start kube-scheduler.service

systemctl enable kube-scheduler.service

为master02 做软链接,方便使用和系统读取

ln -s /opt/kubernetes/bin/* /usr/local/bin/

在02 机器上查看节点状态

kubectl get nodes

负载均衡部署

配置load balancer集群双机热备负载均衡(nginx 负载均衡 keepalived 双机热备)

在 lb01 lb02 节点上操作

配置nginx 官方在线yum 源

cat > /etc/yum.repos.d/nginx.repo << 'EOF' [nginx] name=nginx repo baseurl=Index of /packages/centos/7/$basearch/ gpgcheck=0 EOF

yum install nginx -y

随后修改nginx配置文件,配置四层反向代理负载均衡,指定k8s群集2台master的节点ip和6443端口

vim /etc/nginx/nginx.conf

nginx -t     检查语法是否有误

启动nginx服务,并查看已监听6443端口

systemctl start nginx

systemctl enable nginx

接下来部署 keepalived 服务

yum install keepalived -y

修改 keepalived 主配置文件

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id NGINX_MASTER              #lb02   是NGINX_BACKUP
}

vrrp_script check_nginx {
    script "/etc/nginx/check_nginx.sh"                  # 添加nginx 健康检查脚本
}

vrrp_instance VI_1 {
    state MASTER          #lb02 是BACKUP
    interface eth33           # ens33
    virtual_router_id 51
    priority 100                   #lb02   90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.16.233.99         #虚拟ip

    }
track_script {
        check_nginx
    }

}
 

创建nginx状态检查脚本

vim /etc/nginx/check_nginx.sh

赋权

启动keepalived 服务

systemctl start keepalived

ip a 查看虚拟ip

在node 节点上操作

修改node节点上的bootstrap.kubeconfig,kubelet.kubeconfig配置文件为VIP

cd /opt/kubernetes/cfg/

vim bootstrap.kubeconfig

vim kubelet.kubeconfig

vim kube-proxy.kubeconfig

重启kubelet和kube-proxy服务

systemctl restart kubelet.service

systemctl restart kube-proxy.service

在lb01 上查看 nginx 和 node 、 master 节点的连接状态

netstat -natp | grep nginx

部署dashboard

在 master01 节点上操作

上传 recommended.yaml 文件到 /opt/k8s 目录中

cd /opt/k8s

vim recommended.yaml

kubectl apply -f recommended.yaml

创建service account并绑定默认cluster-admin管理员集群角色

kubectl create serviceaccount dashboard-admin -n kube-system

kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin

kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

浏览器访问

https://172.16.233.104:30001


http://www.kler.cn/a/369305.html

相关文章:

  • [笔记] ffmpeg docker编译环境搭建
  • 【51单片机】第一个小程序 —— 点亮LED灯
  • C++:字符串
  • 《手写Spring渐进式源码实践》实践笔记(第十一章 AOP-基于JDK、Cglib实现对象动态代理)
  • 卷积神经网络(CNNs)在处理光谱特征的序列属性时表现不佳
  • 数据库文档插件 screw
  • 08 实战:色彩空间展示(本程序以视频为主)
  • 基于 matlab 计算 TPI(地形位置指数)
  • 2024-10-24 问AI: [AI面试题] 解释自然语言处理 (NLP) 的概念
  • AAPL: Adding Attributes to Prompt Learning for Vision-Language Models
  • RTOS性能测试:R-Rhealstone
  • 从可逆计算看低代码
  • C语言复习总结超详细版(1)小白转身即变 有实例超级详细
  • 多态的体现
  • 【数据结构与算法】第5课—数据结构之双链表
  • 网络原理之 TCP解释超详细!!!
  • 面试域——面试系统工程
  • Allegro:强大的文本到视频模型
  • 685. 冗余连接 II
  • [LeetCode] 784. 字母大小写全排序
  • 聚合值和非聚合值比较【SQL】
  • 基于SpringBoot的高考志愿智能推荐系统的设计与实现
  • Stable diffusion inference 多卡并行
  • FAQ-为什么交换机发给服务器的日志显示的时间少8小时
  • 易考八股文之如何对数据库进行优化(优化不少于十条)
  • 【学术会议论文投稿】“从零到一:使用IntelliJ IDEA打造你的梦幻HTML项目“