4.DNS和负载均衡

news2024/12/26 10:51:51

文章目录

  • coreDNS
    • 概念
    • 部署croeDNS
    • 测试
  • kubernetes多master集群结构
    • master节点部署
  • 负载均衡配置
    • 部署nginx做四层反向代理
    • 安装高可用 keepalived
    • nginx监控脚本
    • 修改k8s中组件的配置文件

coreDNS

概念

  • coreDNS是kubernetes的默认DNS实现。可以为集群中的service资源创建一个资源名称与clusterIP的对应关系解析

  • kubernetes可以选择使用DNS来避免将服务器的集群IP地址硬编码到您的引用程序中

  • K8S的DNS实现

    • coreDNS
    • 根据xervice资源的名称解析出clusterip
    • 根据statfulset控制器创建的pod资源名称解析出pod IP

部署croeDNS

##在所有的 node 节点上
#上传文件  coredns.tar  到 /opt/k8s

#加载 coredns的镜像
docker load -i coredns.tar
##在master01节点
##上传 coredns.yaml  到 /opt/k8s
##安装 coredns
kubectl apply -f coredns.yaml
###查看所有命名空间下的pod资源
kubectl get pods -A

在这里插入图片描述

测试

###master01节点
###创建pods资源
kubectl create deployment ggl --image=nginx:latest --port=80
###查看pods
kubectl get pods -o wide

在这里插入图片描述

##授权,给kubectl绑定默认cluster-admin管理源集群角色,授权集群操作权限
kubectl create clusterrolebinding cluster-system-anonymous --clusterrole=cluster-admin --user=system:anonymous
##查看deployment
kubectl get deployment

##创建service资源
kubectl expose deployment ggl --port=80 --name myapp-ggl --target-port=80

##查看service资源
kubectl get service

在这里插入图片描述

###进入到pods中
kubectl exec -it pod名称 bash

##在pods中配置DNS域名解析
cat /etc/resolv.conf

##获取域名后缀
default.svc.cluster.local

##查看指定 service 绑定
nslookup myapp-ggl.default.svc.cluster.local
  • CoreDNS 是 K8S 的默认 DNS 实现
    • 根据 service 资源名称 解析出 Cluster IP
    • 根据 statefulset 控制器创建的 Pod 资源名称 解析出 Pod IP
#DNS 解析测试
kubectl run -it --rm dns-test --image=busybox:1.28.4 sh


If you don't see a command prompt, try pressing enter.
/ # nslookup kubernetes
Server:    10.0.0.2
Address 1: 10.0.0.2 kube-dns.kube-system.svc.cluster.local

Name:      kubernetes
Address 1: 10.0.0.1 kubernetes.default.svc.cluster.local

在这里插入图片描述

kubernetes多master集群结构

###master02:192.168.242.69

##使用同样的方式进行初始化操作
##要修改主机名

master节点部署

##从 master01 节点上拷贝证书文件、各master组件的配置文件和服务管理文件到 master02 节点
scp -r /opt/etcd/ root@192.168.242.69:/opt/
scp -r /opt/kubernetes/ root@192.168.242.69:/opt
scp /usr/lib/systemd/system/{kube-apiserver,kube-controller-manager,kube-scheduler}.service root@192.168.242.69:/usr/lib/systemd/system/
scp -r /root/.kube root@192.168.242.69:/root
###master02
##修改配置文件

cd /opt/kubernetes/cfg


vim kube-scheduler.kubeconfig
vim kube-controller-manager.kubeconfig
vim /root/.kube/config
修改为   server: https://192.168.242.69:6443

vim kube-apiserver
修改    --bind-address=192.168.242.69 \
       --secure-port=6443 \
       --advertise-address=192.168.242.69 \
##依次启动服务
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/
###在  master02中也能够使用  kubectl 客户端
kubectl get pods

负载均衡配置

###利用 nginx + keepalived  做负载均衡
192.168.242.70
192.168.242.71
##关闭防火墙
systemctl disable --now firewalld
setenforce 0 
vim /etc/selinx/config

部署nginx做四层反向代理

###nginx  的 yum  源

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
##安装nginx
yum -y install nginx
##修改配置文件
cd /etc/nginx/
vim nginx.conf


use epoll;

stream {
	upstream k8s {
	   server 192.168.242.66:6443;
	   server 192.168.242.69:6443;
	}
	server {
	   listen 6443;
	   proxy_pass k8s;
	}
}
##启动nginx
nginx -t
systemctl enable --now nginx

netstat -lntp | grep nginx

安装高可用 keepalived

##安装 keepalived

yum -y install keepalived
###修改配置文件

cd /etc/keepalived
cp keepalived.conf{,.bak}
vim keepalived.conf



global_defs {
	smtp_server 127.0.0.1
	router_id Nginx_01
}


vrrp_script chk_nginx {
    ###指定监控脚本的路径
    script "/etc/keepalived/nginx_check.sh"
    ###检测的间隔时间
    interval 2
    ###权重
    weight 2
}



vrrp_script chk_nginx {
    script "/etc/keepalived/nginx_check.sh"
    interval 2
    weight 2
}



vrrp_instance VI_1 {
    state MASTER
    interface ens32
    virtual_router_id 51	
    priority 100
    advert_int 1					
    authentication {				
		auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.242.100
    }
    track_script {                   ###加载追踪模块
        chk_nginx
    }
}

nginx监控脚本

###创建监控脚本
vim /etc/keepalived/nginx_check.sh
###检测nginx是否启动的脚本
#!/bin/bash
if ! killall -0 nginx  &> /dev/null
then
    systemctl stop keepalived
fi
vim nginx_check.sh
###给脚本添加执行权限
chmod +x nginx_check.sh
###启动  keepalived

systemctl enable --now keepalived

###查看VIP地址
ip a 

在这里插入图片描述

修改k8s中组件的配置文件

###修改node节点的配置文件

cd /opt/kubernetes/cfg/

vim bootstrap.kubeconfig
vim kubelet.kubeconfig
vim kube-proxy.kubeconfig


修改为   server: https://192.168.242.100:6443
###重启服务
systemctl restart kubelet.service kube-proxy.service
###在负载均衡器中查看端口信息

netstat -natp | grep nginx

在这里插入图片描述

###修改  kubectl 配置文件

vim /root/.kube/config
修改为   server: https://192.168.242.100:6443

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/842677.html

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

相关文章

ThinkPHP6企业OA办公系统

有需要请加文章底部Q哦 可远程调试 ThinkPHP6企业OA办公系统 一 介绍 勾股OA基于ThinkPHP6开发,前端Layui,数据库mysql,是一款实用的企业办公系统。可多角色登录,集成了系统设置、人事管理、消息管理、审批管理、日常办公、客户…

构建器/建造者/构建者模式(C++)

定义 将一个复杂对象的构建与其表示相分离,使得同样的构建过程(稳定)可以创建不同的表示(变化)。 应用场景 在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象…

Homer:一个简单的静态主页

什么是 Homer ? Homer 是一个完全静态的 html/js 仪表板,基于一个简单的 yaml 配置文件。它旨在由 HTTP 服务器提供服务,如果您直接通过 file:// 协议打开 index.html,它将无法工作。 安装 在群晖上以 Docker 方式安装。 在注册表中搜索 h…

RISC-V基础之函数调用(四)非叶函数调用(包含实例)

叶函数是指不调用其他函数,也不改变任何非易失性寄存器的函数2。叶函数通常是一些简单的操作,如数学运算或逻辑判断。叶函数的特点是可以通过模拟返回来展开,即不需要保存或恢复寄存器的状态。 非叶函数是指调用其他函数或改变非易失性寄存器…

百度智能云“千帆大模型平台”升级:大模型最多,Prompt模板最全

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

Rust 原生支持龙架构指令集

导读近日,Rust 开源社区发布 1.71.0 版本,实现对龙架构(LoongArch)指令集的原生支持。 龙架构操作系统发行版和开发者可基于上游社区源代码构建或直接下载 Rust 开源社区发布的龙架构二进制版本。Rust 开发者将在龙架构平台上获得…

【Vue】Parsing error: No Babel config file detected for ... vue

报错 Parsing error: No Babel config file detected for E:\Study\Vue网站\实现防篡改的水印\demo02\src\App.vue. Either disable config file checking with requireConfigFile: false, or configure Babel so that it can find the config files.             …

23年电赛D题-信号调制方式识别与参数估计装置

红叶何时落水 题目 题目分析 该题目的是制作一个信号检测以及解调装置 主要的任务有三个 1.六种信号的识别 2.信号相关参数的测量 3.信号解调 任务一 识别信号有很多思路,最简单的方式便是通过对信号进行FFT分析,分析其中的各个谐波的特征值。 …

自动化测试CSS元素定位

目录 1.1 CSS定位 1.1.1 绝对路径定位 1.1.2 相对路径定位 1.1.3 类名定位 1.1.4 属性定位 1.1.4.1 ID属性定位 1.1.4.2 其他属性定位 1.1.4.3 模糊属性定位 1.1.5 子页面元素查找 1.1.6 伪类定位 1.1 CSS伪类 1.1 CSS定位 1.1.1 绝对路径定位 目标 查找第一个文…

CS 144 Lab Seven -- putting it all together

CS 144 Lab Seven -- putting it all together 引言测试lab7.ccUDPSocketNetworkInterfaceAdapterTCPSocketLab7main方法子线程 小结 对应课程视频: 【计算机网络】 斯坦福大学CS144课程 Lab Six 对应的PDF: Checkpoint 6: putting it all together 引言 本实验无需进行任何编…

HubSpot网页设计神器,你想要的Landing Page都在这里!

在当今数字化时代,Landing Page(落地页)已成为营销策略中不可或缺的一环。它是与潜在客户首次接触的窗口,能够直接影响转化率和销售结果。而作为一款领先的营销自动化工具,HubSpot为企业提供了打造引人注目的Landing P…

uniapp微信小程序 401时重复弹出登录弹框问题

APP.vue 登陆成功后,保存登陆信息 if (res.code 200) {uni.setStorageSync(loginResult, res)uni.setStorageSync(token, res.token);uni.setStorageSync(login,false);uni.navigateTo({url: "/pages/learning/learning"}) }退出登录 toLogout: func…

Spring Cloud 的版本和SpringBoot的版本

Spring Cloud 的版本选择 Spring Cloud 和SpringBoot的版本存在对应关系 Spring Cloud 的版本和SpringBoot的版本,存在对应关系。最新的SpringCloud版本(发布文章时为2022.0.3),需要SpringBoot(3.0.9) 的…

爬虫获取电影数据----以沈腾参演电影为例

数据可视化&分析实战 1.1 沈腾参演电影数据获取 文章目录 数据可视化&分析实战前言1. 网页分析2. 构建数据获取函数2.1 网页数据获取函数2.2 网页照片获取函数 3. 获取参演影视作品基本数据4. 电影详细数据获取4.1 导演、演员、描述、类型、投票人数、评分信息、电影海…

【云原生】Docker-compose中所有模块学习

compose模块 模板文件是使用 Compose 的核心,涉及到的指令关键字也比较多。但大家不用担心,这里面大部分指令跟 docker run 相关参数的含义都是类似的。 默认的模板文件名称为 docker-compose.yml,格式为 YAML 格式。 version: "3&quo…

STM32基础入门学习笔记:内部高级功能应用

文章目录: 一:低功耗模式 1.睡眠模式测试程序 NVIC.h NVIC.c key.h key.c main.c 2.停机模式测试程序 main.c 3.待机模式测试程序 main.c 二:看门狗 1.独立看门狗测试程序 iwdg.h iwdg.c main.c 2.窗口看门狗测试程序 wwdg…

Unity面板究极优化

首先对于大项目来说UI首选一定的UGUI,目前没有啥可选的余地。多一点都是对性能的负担,UGUI底层基于多线程技术,可以有效分担压力,对于一些不是那么重的面板几乎无感。 无论其他面板只是在此基础上修改的,但每多一层&am…

机器学习---监督学习和非监督学习

根据训练期间接受的监督数量和监督类型,可以将机器学习分为以下四种类型:监督学习、非监督学习、半监督学习和强化学习。 监督学习 在监督学习中,提供给算法的包含所需解决方案的训练数据,成为标签或标记。 简单地说,…

40.利用欧拉法求解微分方程组(matlab程序)

1.简述 求解微分方程的时候,如果不能将求出结果的表达式,则可以对利用数值积分对微分方程求解,获取数值解。欧拉方法是最简单的一种数值解法。前面介绍过MATLAB实例讲解欧拉法求解微分方程,今天实例讲解欧拉法求解一阶微分方程组。…

简单认识ELK日志分析系统

一. ELK日志分析系统概述 1.ELK 简介 ELK平台是一套完整的日志集中处理解决方案,将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用, 完成更强大的用户对日志的查询、排序、统计需求。 好处: (1)提高安全…