k8s 二进制部署安装(三)

news2024/11/24 6:41:40

目录

部署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.coloradmin.cn/o/2230682.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

idea 创建web工程

模块添加Add Framework Support web Application 改为4.0以上

Linux系列-进程的概念

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 这篇文章&#xff0c;我们主要分析一下进程。 之前&#xff0c;我们讲过了冯诺依曼体系架构&#xff0c; 我们常见的计算机&#xff0c;像笔记本&#xff0c;或者不常见的计算机…

Rust的enum枚举的强大用法

在Rust中&#xff0c;enum&#xff08;枚举&#xff09;是一种非常强大的类型&#xff0c;它可以包含多个变体&#xff08;variants&#xff09;&#xff0c;每个变体可以是不同的类型&#xff0c;包括复杂类型。这使得enum在Rust中不仅用于表示简单的状态或选项集合&#xff0…

【初识Linux】

十点半的飞机快要到了&#xff0c;机场还是那么的拥挤.......................................................................... 文章目录 一、【初识指令】 1、 ls✔ 2、pwd✔ 3、cd✔ 4. touch✔ 5.mkdir✔ 6.rmdir✔ 7、rm ✔ 8.man✔ 9.cp✔ ​10、mv✔ 11、cat✔…

头歌——算法设计与分析(贪心法)

文章目录 第1关&#xff1a;贪心法代码 第2关&#xff1a;最小生成树代码 第3关&#xff1a;Huffman 编码代码 第4关&#xff1a;单源点最短路径代码 第1关&#xff1a;贪心法 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a;贪心法 ;。 贪心法&#xff0c;又称…

面试题:JVM(四)

new对象流程&#xff1f;&#xff08;龙湖地产&#xff09; 对象创建方法&#xff0c;对象的内存分配。&#xff08;360安全&#xff09; 1. 对象实例化 创建对象的方式有几种&#xff1f; 创建对象的步骤 指针碰撞&#xff1a;以指针为分界线&#xff0c;一边是已连续使用的…

【进阶sql】复杂sql收集及解析【mysql】

开发时会出现&#xff0c;必须写一些较复杂sql的场景 可能是给会sql的客户 提供一些统计sql 或是临时需要统计数据信息但是 开发一个统计功能有来不及的情况 也可能是报表系统组件 只支持 sql统计的情况 特地记录下这些sql 作为积累 substring 截取查询出的字符串&#xff…

Python实现全国岗位招聘信息可视化分析(源码+论文+部署讲解)

项目源码&数据源获取 利用Python实现全国岗位招聘信息可视化分析 项目背景&#xff1a; 1.为企业招聘决策提供科学的依据和参考&#xff0c;可以帮助人力资源部门、招聘机构和求职者了解当前的就业形势、行业趋势和人才需求&#xff0c;从而做出更明智的招聘和求职决策。…

Python毕业设计选题:基于django+vue的宠物寄养平台的设计与实现

开发语言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 1. 前台系统功能模块 系统首页界面 用户注册界面 用户登录界面 宠物商城界面 宠物店…

Linux云计算 |【第五阶段】CLOUD-DAY10

主要内容&#xff1a; 部署Dashboard、部署Prometheus、部署HPA集群 一、Dashboard介绍 Dashboard是基于网页的Kubernetes用户界面&#xff0c;可以使用Dashboard将容器应用部署到Kubernetes集群中&#xff0c;也可以对容器应用排错&#xff0c;还能管理集群资源。可以使用Da…

将Notepad++添加到右键菜单【一招实现】

一键添加注册表 复制以下代码保存为 Notepad.reg&#xff0c;将红框内路径修改为自己电脑的“Notepad.exe路径”后&#xff0c;再双击运行即可。 Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\*\shell\NotePad] "Notepad" "Icon""D:\\N…

Git下载-连接码云-保姆级教学(连接Gitee失败的解决)

Git介绍 码云连接 一、Git介绍 二、Git的工作机制 下载链接&#xff1a;Git - 下载软件包 三、使用步骤 创建一个wss的文件夹&#xff0c;作为‘工作空间’ 四、连接码云账号 五、连接Gitee失败的解决方法 一、Git介绍 Git是一个免费的、开源的分布式版本控制…

Spring Boot 与 Vue 共铸卓越采购管理新平台

作者介绍&#xff1a;✌️大厂全栈码农|毕设实战开发&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 &#x1f345;获取源码联系方式请查看文末&#x1f345; 推荐订阅精彩专栏 &#x1f447;&#x1f3fb; 避免错过下次更新 Springboot项目精选实战案例 更多项目…

DataFlow v202410 版本更新 一站式数据处理平台

DataFlow 是 OpenCSG 推出的一站式数据处理平台&#xff0c;与 CSGHub 无缝集成&#xff0c;形成数据到模型的全生命周期闭环&#xff0c;助力持续优化。平台兼容多种数据格式与来源&#xff0c;支持本地、云端和网络数据接入&#xff0c;并提供高效转换和读取工具&#xff0c;…

【搜索引擎】俄罗斯搜索引擎yandex

俄罗斯搜索引擎yandex 1997年&#xff0c;俄罗斯搜索引擎Yandex&#xff08;俄语意为&#xff1a;语言目录&#xff09;首次上线&#xff0c;已发展成为全球第四大搜索引擎和第二大非英语搜索引擎 https://yandex.com/

电脑没有下载声卡驱动怎么办?电脑声卡驱动安装方法

在日常使用电脑的过程中&#xff0c;我们可能会遇到电脑没有声音的问题&#xff0c;这往往与声卡驱动缺失或损坏有关。声卡驱动是连接电脑硬件&#xff08;声卡&#xff09;与操作系统之间的桥梁&#xff0c;确保音频信号能够正常输入输出。那么&#xff0c;当电脑没有声卡驱动…

DEVOPS: 集群伸缩原理

概述 阿里云 K8S 集群的一个重要特性&#xff0c;是集群的节点可以动态的增加或减少有了这个特性&#xff0c;集群才能在计算资源不足的情况下扩容新的节点&#xff0c;同时也可以在资源利用 率降低的时候&#xff0c;释放节点以节省费用理解实现原理&#xff0c;在遇到问题的…

git 删除远程不存在本地命令却能看到的分支

要删除远程不存在但本地却能看到的分支&#xff0c;你可以按照以下步骤操作&#xff1a; 删除本地分支&#xff1a; 如果你确定要删除的分支已经没有用处&#xff0c;可以使用以下命令来删除本地分支&#xff1a; git branch -d <branch-name>这里的 <branch-name>…

《Python游戏编程入门》注-第4章6

《Python游戏编程入门》的“轮询鼠标”内容介绍了通过轮询鼠标实现实时显示鼠标位置和按键状态的游戏。 1 游戏介绍 实时显示鼠标位置和按键状态的游戏如图1所示。 图1 实时显示鼠标位置和按键状态 从图1中可以看到&#xff0c;游戏界面主要分为上下两部分。其中&#xff0c…

ENNSP中ACL的实验配置

ACL&#xff1a;访问控制列表 1访问控制----在路由器的入或者出的接口上&#xff0c;匹配流量&#xff0c;之后产生动作---允许或拒绝 2.定义感兴趣流量-----帮助其他软件抓流量 访问控制的匹配规则&#xff1a; 拓扑图如下 基础配置 基础配置弄好后&#xff0c;随便p…