首页
  • NAS
  • k8s
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档

︶﹌⋛⋋维💋美⋌⋚﹌︶

喝☕️、看世界、修复那些无止境的问题
首页
  • NAS
  • k8s
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
  • NAS

    • 硬件资源
    • 系统选择
    • 网络拓扑
    • 系统架构
    • 浅谈ZFS
    • ZFS存储池管理
    • ZFS文件系统管理
    • ZFS快照管理
    • 云端备份
    • SMB共享配置
    • NFS共享配置
    • Bonjour服务广播
    • rockyLinux初始化
    • K8S

    • 运维
    • NAS
    ︶﹌⋛⋋维💋美⋌⋚﹌︶
    2025-03-30
    目录

    rockyLinux初始化

    # 设置主机名

    hostnamectl set-hostname k8s-master-01
    
    1

    # 设置hosts本地解析 (按需设置)

    cat > /etc/hosts <<EOF
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    
    192.168.3.31 k8s-master-01
    192.168.3.32 k8s-master-02
    192.168.3.33 k8s-master-03
    192.168.3.34 k8s-node-01
    192.168.3.35 k8s-node-02
    192.168.3.36 k8s-node-03
    192.168.3.30 lb-vip
    EOF
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    # ip修改

    通过ip address 找到网卡mac地址。然后路由器配置ip与mac地址绑定

    # 系统更新

    dnf update
    
    1

    # 常用包安装

    dnf install vim net-tools nfs-utils telnet yum-utils git tar curl gcc keepalived haproxy bash-completion chrony sshpass ipvsadm ipset sysstat conntrack libseccomp wget
    
    1

    # 关闭防火墙

    systemctl stop firewalld
    systemctl disable firewalld
    
    1
    2

    # 关闭SELinux

    setenforce 0
    sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
    # 参数解释
    # 
    # setenforce 0
    # 此命令用于设置 SELinux 的执行模式。0 表示关闭 SELinux。
    # 
    # sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
    # 该命令使用 sed 工具来编辑 /etc/selinux/config 文件。其中 '-i' 参数表示直接修改原文件,而不是输出到终端或另一个文件。's#SELINUX=enforcing#SELINUX=disabled#g' 是 sed 的替换命令,它将文件中所有的 "SELINUX=enforcing" 替换为 "SELINUX=disabled"。这里的 '#' 是分隔符,用于替代传统的 '/' 分隔符,以避免与路径中的 '/' 冲突。
    
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    # 关闭交换分区(k8s 环境需要)

    sed -ri 's/.*swap.*/#&/' /etc/fstab
    swapoff -a && sysctl -w vm.swappiness=0
    
    cat /etc/fstab
    # /dev/mapper/centos-swap swap                    swap    defaults        0 0
    
    
    # 参数解释:
    # 
    # -ri: 这个参数用于在原文件中替换匹配的模式。-r表示扩展正则表达式,-i允许直接修改文件。
    # 's/.*swap.*/#&/': 这是一个sed命令,用于在文件/etc/fstab中找到包含swap的行,并在行首添加#来注释掉该行。
    # /etc/fstab: 这是一个文件路径,即/etc/fstab文件,用于存储文件系统表。
    # swapoff -a: 这个命令用于关闭所有启用的交换分区。
    # sysctl -w vm.swappiness=0: 这个命令用于修改vm.swappiness参数的值为0,表示系统在物理内存充足时更倾向于使用物理内存而非交换分区。
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14

    # 网络配置(k8s环境需要)

    cat > /etc/NetworkManager/conf.d/calico.conf << EOF 
    [keyfile]
    unmanaged-devices=interface-name:cali*;interface-name:tunl*
    EOF
    systemctl restart NetworkManager
    
    # 参数解释
    #
    # 这个参数用于指定不由 NetworkManager 管理的设备。它由以下两个部分组成
    # 
    # interface-name:cali*
    # 表示以 "cali" 开头的接口名称被排除在 NetworkManager 管理之外。例如,"cali0", "cali1" 等接口不受 NetworkManager 管理。
    # 
    # interface-name:tunl*
    # 表示以 "tunl" 开头的接口名称被排除在 NetworkManager 管理之外。例如,"tunl0", "tunl1" 等接口不受 NetworkManager 管理。
    # 
    # 通过使用这个参数,可以将特定的接口排除在 NetworkManager 的管理范围之外,以便其他工具或进程可以独立地管理和配置这些接口。
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17

    # 配置ulimit

    ulimit -SHn 65535
    cat >> /etc/security/limits.conf <<EOF
    * soft nofile 655360
    * hard nofile 131072
    * soft nproc 655350
    * hard nproc 655350
    * seft memlock unlimited
    * hard memlock unlimitedd
    EOF
    
    # 参数解释
    #
    # soft nofile 655360
    # soft表示软限制,nofile表示一个进程可打开的最大文件数,默认值为1024。这里的软限制设置为655360,即一个进程可打开的最大文件数为655360。
    #
    # hard nofile 131072
    # hard表示硬限制,即系统设置的最大值。nofile表示一个进程可打开的最大文件数,默认值为4096。这里的硬限制设置为131072,即系统设置的最大文件数为131072。
    #
    # soft nproc 655350
    # soft表示软限制,nproc表示一个用户可创建的最大进程数,默认值为30720。这里的软限制设置为655350,即一个用户可创建的最大进程数为655350。
    #
    # hard nproc 655350
    # hard表示硬限制,即系统设置的最大值。nproc表示一个用户可创建的最大进程数,默认值为4096。这里的硬限制设置为655350,即系统设置的最大进程数为655350。
    #
    # seft memlock unlimited
    # seft表示软限制,memlock表示一个进程可锁定在RAM中的最大内存,默认值为64 KB。这里的软限制设置为unlimited,即一个进程可锁定的最大内存为无限制。
    #
    # hard memlock unlimited
    # hard表示硬限制,即系统设置的最大值。memlock表示一个进程可锁定在RAM中的最大内存,默认值为64 KB。这里的硬限制设置为unlimited,即系统设置的最大内存锁定为无限制。
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29

    # ssh免密登录

    • 创建身份验证 SSH-Keygen 密钥
    ssh-keygen -t rsa
    # 公钥重命名为authorized_keys
    mv /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys
    # 将私钥下载到本地
    
    1
    2
    3
    4
    • 禁用密码验证
    # 编辑/etc/ssh/sshd_config 文件 找到 PasswordAuthentication 设置为no
    vim /etc/ssh/sshd_config
    # PasswordAuthentication no
    
    1
    2
    3
    • 重启ssh
    systemctl restart sshd
    
    1

    # 安装ipvsadm

    yum install ipvsadm ipset sysstat conntrack libseccomp -y
    cat >> /etc/modules-load.d/ipvs.conf <<EOF 
    ip_vs
    ip_vs_rr
    ip_vs_wrr
    ip_vs_sh
    nf_conntrack
    ip_tables
    ip_set
    xt_set
    ipt_set
    ipt_rpfilter
    ipt_REJECT
    ipip
    EOF
    
    systemctl restart systemd-modules-load.service
    
    lsmod | grep -e ip_vs -e nf_conntrack
    ip_vs_sh               12288  0
    ip_vs_wrr              12288  0
    ip_vs_rr               12288  0
    ip_vs                 237568  6 ip_vs_rr,ip_vs_sh,ip_vs_wrr
    nf_conntrack          229376  1 ip_vs
    nf_defrag_ipv6         24576  2 nf_conntrack,ip_vs
    nf_defrag_ipv4         12288  1 nf_conntrack
    libcrc32c              12288  3 nf_conntrack,xfs,ip_vs
    
    # 参数解释
    #
    # ip_vs
    # IPVS 是 Linux 内核中的一个模块,用于实现负载均衡和高可用性。它通过在前端代理服务器上分发传入请求到后端实际服务器上,提供了高性能和可扩展的网络服务。
    #
    # ip_vs_rr
    # IPVS 的一种调度算法之一,使用轮询方式分发请求到后端服务器,每个请求按顺序依次分发。
    #
    # ip_vs_wrr
    # IPVS 的一种调度算法之一,使用加权轮询方式分发请求到后端服务器,每个请求按照指定的权重比例分发。
    #
    # ip_vs_sh
    # IPVS 的一种调度算法之一,使用哈希方式根据源 IP 地址和目标 IP 地址来分发请求。
    #
    # nf_conntrack
    # 这是一个内核模块,用于跟踪和管理网络连接,包括 TCP、UDP 和 ICMP 等协议。它是实现防火墙状态跟踪的基础。
    #
    # ip_tables
    # 这是一个内核模块,提供了对 Linux 系统 IP 数据包过滤和网络地址转换(NAT)功能的支持。
    #
    # ip_set
    # 这是一个内核模块,扩展了 iptables 的功能,支持更高效的 IP 地址集合操作。
    #
    # xt_set
    # 这是一个内核模块,扩展了 iptables 的功能,支持更高效的数据包匹配和操作。
    #
    # ipt_set
    # 这是一个用户空间工具,用于配置和管理 xt_set 内核模块。
    #
    # ipt_rpfilter
    # 这是一个内核模块,用于实现反向路径过滤,用于防止 IP 欺骗和 DDoS 攻击。
    #
    # ipt_REJECT
    # 这是一个 iptables 目标,用于拒绝 IP 数据包,并向发送方发送响应,指示数据包被拒绝。
    #
    # ipip
    # 这是一个内核模块,用于实现 IP 封装在 IP(IP-over-IP)的隧道功能。它可以在不同网络之间创建虚拟隧道来传输 IP 数据包。
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65

    # 修改内核参数

    cat <<EOF > /etc/sysctl.d/k8s.conf
    net.ipv4.ip_forward = 1
    net.bridge.bridge-nf-call-iptables = 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
    
    net.ipv6.conf.all.disable_ipv6 = 0
    net.ipv6.conf.default.disable_ipv6 = 0
    net.ipv6.conf.lo.disable_ipv6 = 0
    net.ipv6.conf.all.forwarding = 1
    EOF
    
    sysctl --system
    
    # 这些是Linux系统的一些参数设置,用于配置和优化网络、文件系统和虚拟内存等方面的功能。以下是每个参数的详细解释:
    # 
    # 1. net.ipv4.ip_forward = 1
    #    - 这个参数启用了IPv4的IP转发功能,允许服务器作为网络路由器转发数据包。
    # 
    # 2. net.bridge.bridge-nf-call-iptables = 1
    #    - 当使用网络桥接技术时,将数据包传递到iptables进行处理。
    #   
    # 3. fs.may_detach_mounts = 1
    #    - 允许在挂载文件系统时,允许被其他进程使用。
    #   
    # 4. vm.overcommit_memory=1
    #    - 该设置允许原始的内存过量分配策略,当系统的内存已经被完全使用时,系统仍然会分配额外的内存。
    # 
    # 5. vm.panic_on_oom=0
    #    - 当系统内存不足(OOM)时,禁用系统崩溃和重启。
    # 
    # 6. fs.inotify.max_user_watches=89100
    #    - 设置系统允许一个用户的inotify实例可以监控的文件数目的上限。
    # 
    # 7. fs.file-max=52706963
    #    - 设置系统同时打开的文件数的上限。
    # 
    # 8. fs.nr_open=52706963
    #    - 设置系统同时打开的文件描述符数的上限。
    # 
    # 9. net.netfilter.nf_conntrack_max=2310720
    #    - 设置系统可以创建的网络连接跟踪表项的最大数量。
    # 
    # 10. net.ipv4.tcp_keepalive_time = 600
    #     - 设置TCP套接字的空闲超时时间(秒),超过该时间没有活动数据时,内核会发送心跳包。
    # 
    # 11. net.ipv4.tcp_keepalive_probes = 3
    #     - 设置未收到响应的TCP心跳探测次数。
    # 
    # 12. net.ipv4.tcp_keepalive_intvl = 15
    #     - 设置TCP心跳探测的时间间隔(秒)。
    # 
    # 13. net.ipv4.tcp_max_tw_buckets = 36000
    #     - 设置系统可以使用的TIME_WAIT套接字的最大数量。
    # 
    # 14. net.ipv4.tcp_tw_reuse = 1
    #     - 启用TIME_WAIT套接字的重新利用,允许新的套接字使用旧的TIME_WAIT套接字。
    # 
    # 15. net.ipv4.tcp_max_orphans = 327680
    #     - 设置系统可以同时存在的TCP套接字垃圾回收包裹数的最大数量。
    # 
    # 16. net.ipv4.tcp_orphan_retries = 3
    #     - 设置系统对于孤立的TCP套接字的重试次数。
    # 
    # 17. net.ipv4.tcp_syncookies = 1
    #     - 启用TCP SYN cookies保护,用于防止SYN洪泛攻击。
    # 
    # 18. net.ipv4.tcp_max_syn_backlog = 16384
    #     - 设置新的TCP连接的半连接数(半连接队列)的最大长度。
    # 
    # 19. net.ipv4.ip_conntrack_max = 65536
    #     - 设置系统可以创建的网络连接跟踪表项的最大数量。
    # 
    # 20. net.ipv4.tcp_timestamps = 0
    #     - 关闭TCP时间戳功能,用于提供更好的安全性。
    # 
    # 21. net.core.somaxconn = 16384
    #     - 设置系统核心层的连接队列的最大值。
    # 
    # 22. net.ipv6.conf.all.disable_ipv6 = 0
    #     - 启用IPv6协议。
    # 
    # 23. net.ipv6.conf.default.disable_ipv6 = 0
    #     - 启用IPv6协议。
    # 
    # 24. net.ipv6.conf.lo.disable_ipv6 = 0
    #     - 启用IPv6协议。
    # 
    # 25. net.ipv6.conf.all.forwarding = 1
    #     - 允许IPv6数据包转发。
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    #NAS
    Bonjour服务广播
    kubelet 启动失败

    ← Bonjour服务广播 kubelet 启动失败→

    最近更新
    01
    Longhorn安装
    06-22
    02
    k8s显卡插件
    06-21
    03
    Bonjour服务广播
    03-24
    更多文章>
    Theme by Vdoing | Copyright © 2024-2025 维美 | Blog
    闽ICP备2023022769号
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式