2、K8S服务搭建—自建DNS服务器
自建DNS服务,提供集群内部域名解析功能,已比面IP暴露。并且搭建DNS服务器,就不需要每台服务器修改hosts文件了
登录到DNS服务器(192.168.100.51)进行相应的部署
1、安装bind9 和 bind-utils 和 bind-chroot
yum install bind bind-utils bind-chroot -y
2、配置文件列表
1、/etc/named.conf 主配置文件
2、/etc/named/zone 文件
这个就是bind-chroot生成的伪根目录。在这个目录下,会生产完整的bind服务的结构,进到这个目录下,会发现里面基本没有文件,只有目录文件夹,这就需要你将真实的根目录下的bind的配置文件和一些需要的文件都复制一份到这个伪根下,或创建一些基础文件,给与权限啊等操作
cp -R /usr/share/doc/bind-9.11.4/sample/var/named/* /var/named/chroot/var/named/ && \
touch /var/named/chroot/var/named/data/cache_dump.db && \
touch /var/named/chroot/var/named/data/named_stats.txt && \
touch /var/named/chroot/var/named/data/named_mem_stats.txt && \
touch /var/named/chroot/var/named/data/named.run && \
mkdir /var/named/chroot/var/named/dynamic && \
touch /var/named/chroot/var/named/dynamic/managed-keys.bind && \
chmod -R 777 /var/named/chroot/var/named/data && \
chmod -R 777 /var/named/chroot/var/named/dynamic && \
cp -R /etc/named* /var/named/chroot/etc/ && \
chown -R root.named /var/named/chroot/ #直接将伪根目录下的所有文件都给named用户,让其能够修改。避免权限问题报错。
如果不不使用 bind-chroot 的话,就不需要上面的操作。直接进行下面的配置文件修改,修改的目录也不是伪根目录了,直接修改真实的目录就行
3、剩下的就是编辑配置文件,自定义DNS服务了。
vim /var/named/chroot/etc/named.conf
配置文件内容如下
options {
listen-on port 53 { any; }; # 监听任何ip对53端口的请求
# 去掉ipv6的地址
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { any; }; # 接收任何来源查询dns记录
# 加如下配置
forwarders {
114.114.114.114;
8.8.8.8;
};
# 改
recursion yes; # 采用递归算法查询ip
dnssec-enable no;
dnssec-validation no;
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
检查bind9配置
named-checkconf
4、然后修改域空间配置文件
vim /var/named/chroot/etc/named.rfc1912.zones
配置如下
zone "host.com" IN { # 主机域
type master; # DNS服务类型,默认为master,这里我们是搭建的第一个DNS服务器,则就定为主服务器,即默认的master
file "host.com.zone"; # 域名配置文件名 ,这个文件名会在 /var/named/chroot/var/named/ 这个目录下去寻找
allow-update { 192.168.100.51; };
};
zone "xuexi.com" IN {
type master;
file "xuexi.com.zone";
allow-update { 192.168.100.51; };
};
5、配置区域数据文件
- 配置主机域数据文件
vim /var/named/chroot/var/named/host.com.zone
配置内容如下
$ORIGIN host.com.
$TTL 600 ; 10 minutes # TTL 就是修改配置的生效时间,本质上就是这个域 的DNS信息在别的DNS服务器的缓存中存在多久,默认为一天
@ IN SOA dns.host.com. dnsadmin.host.com. (
2021121401 ; serial # 这个是配置的编号,每次修改完配置后 这个编号变化一下,通常是直接+1,这样从服务器就能知道有修改并更新配置
10800 ; refresh (3 hours) # 从服务器刷新时间,默认 一天刷新一次
900 ; retry (15 minutes) # 如果刷新失败,默认1 小时重试一次
604800 ; expire (1 week) # 缓存过期时间,一周
86400 ; minimum (1 day)
)
NS dns.host.com.
$TTL 60 ; 1 minute
dns A 192.168.100.51 # 配置子域名,也就是主机 名,对应的IP地址,A记录就是对应 IPV4 地址。 IN 表示 internel 网络
k8s-100-50 A 192.168.100.50
k8s-100-52 A 192.168.100.52
k8s-100-53 A 192.168.100.53
k8s-100-54 A 192.168.100.54
k8s-100-55 A 192.168.100.55
k8s-100-56 A 192.168.100.56
- 配置业务域数据文件
vim /var/named/chroot/var/named/xuexi.com.zone
配置内容如下
$ORIGIN xuexi.com.
$TTL 600 ; 10 minutes
@ IN SOA dns.xuexi.com. dnsadmin.xuexi.com. (
2021081801 ; serial
10800 ; refresh (3 hours)
900 ; retry (15 minutes)
604800 ; expire (1 week)
86400 ; minimum (1 day)
)
NS dns.host.com.
$TTL 60 ; 1 minute
dns A 192.168.100.51
检查bind9配置
named-checkconf
启动named服务,并设置成开机自启动服务
systemctl enable --now named-chroot
在DNS服务器上(192.168.100.51)检查DNS服务是否启动成功
dig -t A k8s-100-50.host.com @192.168.100.51 +short
# 返回如下即成功
~] dig -t A k8s-100-50.host.com @192.168.100.51 +short
192.168.100.50
~]
配置DNS客户端**每个节点**,在网卡配置中设置DNS服务器就不在这里过多叙述
vim /etc/resolve.conf
配置如下:
search host.com
3、ipvsadm安装
目前Linux下kubernetes平台只要是使用ipvs
所有节点安装ipvsadm
模块。
yum install ipvsadm ipset sysstat conntrack libseccomp -y
所有节点配置ipvs模块,在内核4.19+版本nf_conntrack_ipv4已经改为nf_conntrack, 4.18以下使用nf_conntrack_ipv4即可
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
修改ipvs.conf
配置文件
vim /etc/modules-load.d/ipvs.conf
加入以下内容
ip_vs
ip_vs_lc
ip_vs_wlc
ip_vs_rr
ip_vs_wrr
ip_vs_lblc
ip_vs_lblcr
ip_vs_dh
ip_vs_sh
ip_vs_fo
ip_vs_nq
ip_vs_sed
ip_vs_ftp
ip_vs_sh
nf_conntrack
ip_tables
ip_set
xt_set
ipt_set
ipt_rpfilter
ipt_REJECT
ipip
开启服务
systemctl enable --now systemd-modules-load.service
检查服务配置是否加载
lsmod | grep -e ip_vs -e nf_conntrack
开启一些k8s集群中必须的内核参数,所有节点配置k8s内核
vim /etc/sysctl.d/k8s.conf
添加内容如下
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
fs.may_detach_mounts = 1
vm.overcommit_memory=1
vm.panic_on_oom=0
fs.inotify.max_user_watches=89100
fs.file-max=52706963
fs.nr_open=52706963
net.netfilter.nf_conntrack_max=2310720
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_intvl =15
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_max_orphans = 327680
net.ipv4.tcp_orphan_retries = 3
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.ip_conntrack_max = 65536
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_timestamps = 0
net.core.somaxconn = 16384
执行命令
sysctl --system
所有节点配置完内核后,重启服务器,保证重启后内核依旧加载
reboot
lsmod | grep --color=auto -e ip_vs -e nf_conntrack