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

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

在master01节点上操作

测试创建pod

kubectl run nginx --image=nginx

//查看Pod的状态信息

kubectl get pods

kubectl get pods -o wide

在对应的node节点上 curl 访问

部署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}')

这里会输出一个token

浏览器访问

https://172.16.233.104:30001

登录的时候输入token

到这里二进制部署安装就完成了


http://www.mrgr.cn/news/61313.html

相关文章:

  • Linux 系统下查看磁盘是SSD还是HDD命令
  • 【Ubuntu 24.04】虚拟机常见问题解决
  • ubuntu 配置OpenOCD与RT-RT-thread环境的记录
  • MYSQL学习笔记(一):准备数据和数据库的最基本命令
  • 理解AJAX与Axios:异步编程的世界
  • STM32之两种驱动 “旋转编码器“ 方式
  • 玉石渲染用什么渲染软件最好?单品渲染用哪个软件?
  • Mask RCNN原理详解(个人学习笔记)
  • 河南洛宁200MW/400MWh电化学储能示范项目招标公告
  • 【机器学习】14. 集成学习 ensemble: bagging, boosting, 随机森林 random forest
  • Springboot自动装配原理
  • C#自定义事件的案例
  • XD6500S替代翱捷ASR6500S系列低功耗lora SPI模块SX1262/SX1278
  • Spring之HTTP客户端--RestTemplate的使用
  • 揭秘抖音SEO矩阵源码,霸屏秘籍!
  • bean生命周期
  • 煤矿安全大模型:微调internlm2模型实现针对煤矿事故和煤矿安全知识的智能问答
  • 2、片元着色器之有向距离场(SDF)运算:并集、差集、交集
  • 【JavaScript】入门详解
  • 化繁为简的鸿蒙原生开发时代,“开发者”被高度关注
  • 豆瓣同城活动采集-过去一年到未来已定档活动
  • Video-XL:智源研究院开源超基准测试的长视频理解大模型
  • [ACTF2020 新生赛]Exec 1
  • 2. Flink快速上手
  • 如何通过接口版本控制实现向后兼容
  • autojs使用中的一些坑