使用kubeadm部署高可用IPV4/IPV6集群

打印 上一主题 下一主题

主题 523|帖子 523|积分 1569

使用kubeadm部署高可用IPV4/IPV6集群

https://github.com/cby-chen/Kubernetes 开源不易,帮助点个star,谢谢了
介绍

kubernetes(k8s)二进制高可用安装部署,支持IPv4+IPv6双栈。
我使用IPV6的目的是在公网进行访问,所以我设置了IPV6静态地址。
若您没有IPV6环境,或者不想使用IPv6,不对主机进行设置IPv6地址即可。
不设置IPV6,不影响后续,不外集群仍旧是支持IPv6的。为后期留有扩展可能性。
若不要IPv6 ,不给网卡设置IPv6即可,不要对IPv6相关设置删除或操纵,否则会出问题。
猛烈建议在Github上检察文档 !!!

Github出问题会更新文档,并且后续尽可能第一时间更新新版本文档 !!!

k8s基础系统环境设置

设置IP
  1. # 注意!
  2. # 若虚拟机是进行克隆的那么网卡的UUID会重复
  3. # 若UUID重复需要重新生成新的UUID
  4. # UUID重复无法获取到IPV6地址
  5. #
  6. # 查看当前的网卡列表和 UUID:
  7. # nmcli con show
  8. # 删除要更改 UUID 的网络连接:
  9. # nmcli con delete uuid <原 UUID>
  10. # 重新生成 UUID:
  11. # nmcli con add type ethernet ifname <接口名称> con-name <新名称>
  12. # 重新启用网络连接:
  13. # nmcli con up <新名称>
  14. # 更改网卡的UUID
  15. ssh root@192.168.1.31 "nmcli con delete uuid 708a1497-2192-43a5-9f03-2ab936fb3c44;nmcli con add type ethernet ifname eth0 con-name eth0;nmcli con up eth0"
  16. ssh root@192.168.1.32 "nmcli con delete uuid 708a1497-2192-43a5-9f03-2ab936fb3c44;nmcli con add type ethernet ifname eth0 con-name eth0;nmcli con up eth0"
  17. ssh root@192.168.1.33 "nmcli con delete uuid 708a1497-2192-43a5-9f03-2ab936fb3c44;nmcli con add type ethernet ifname eth0 con-name eth0;nmcli con up eth0"
  18. ssh root@192.168.1.34 "nmcli con delete uuid 708a1497-2192-43a5-9f03-2ab936fb3c44;nmcli con add type ethernet ifname eth0 con-name eth0;nmcli con up eth0"
  19. ssh root@192.168.1.35 "nmcli con delete uuid 708a1497-2192-43a5-9f03-2ab936fb3c44;nmcli con add type ethernet ifname eth0 con-name eth0;nmcli con up eth0"
  20. # 参数解释
  21. #
  22. # ssh ssh root@192.168.1.31
  23. # 使用SSH登录到IP为192.168.1.31的主机,使用root用户身份。
  24. #
  25. # nmcli con delete uuid 708a1497-2192-43a5-9f03-2ab936fb3c44
  26. # 删除 UUID 为 708a1497-2192-43a5-9f03-2ab936fb3c44 的网络连接,这是 NetworkManager 中一种特定网络配置的唯一标识符。
  27. #
  28. # nmcli con add type ethernet ifname eth0 con-name eth0
  29. # 添加一种以太网连接类型,并指定接口名为 eth0,连接名称也为 eth0。
  30. #
  31. # nmcli con up eth0
  32. # 开启 eth0 这个网络连接。
  33. #
  34. # 简单来说,这个命令的作用是删除一个特定的网络连接配置,并添加一个名为 eth0 的以太网连接,然后启用这个新的连接。
  35. # 修改静态的IPv4地址
  36. ssh root@192.168.1.104 "nmcli con mod eth0 ipv4.addresses 192.168.1.31/24; nmcli con mod eth0 ipv4.gateway  192.168.1.1; nmcli con mod eth0 ipv4.method manual; nmcli con mod eth0 ipv4.dns "8.8.8.8"; nmcli con up eth0"
  37. ssh root@192.168.1.106 "nmcli con mod eth0 ipv4.addresses 192.168.1.32/24; nmcli con mod eth0 ipv4.gateway  192.168.1.1; nmcli con mod eth0 ipv4.method manual; nmcli con mod eth0 ipv4.dns "8.8.8.8"; nmcli con up eth0"
  38. ssh root@192.168.1.107 "nmcli con mod eth0 ipv4.addresses 192.168.1.33/24; nmcli con mod eth0 ipv4.gateway  192.168.1.1; nmcli con mod eth0 ipv4.method manual; nmcli con mod eth0 ipv4.dns "8.8.8.8"; nmcli con up eth0"
  39. ssh root@192.168.1.109 "nmcli con mod eth0 ipv4.addresses 192.168.1.34/24; nmcli con mod eth0 ipv4.gateway  192.168.1.1; nmcli con mod eth0 ipv4.method manual; nmcli con mod eth0 ipv4.dns "8.8.8.8"; nmcli con up eth0"
  40. ssh root@192.168.1.110 "nmcli con mod eth0 ipv4.addresses 192.168.1.35/24; nmcli con mod eth0 ipv4.gateway  192.168.1.1; nmcli con mod eth0 ipv4.method manual; nmcli con mod eth0 ipv4.dns "8.8.8.8"; nmcli con up eth0"
  41. # 参数解释
  42. #
  43. # ssh root@192.168.1.154
  44. # 使用SSH登录到IP为192.168.1.154的主机,使用root用户身份。
  45. #
  46. # "nmcli con mod eth0 ipv4.addresses 192.168.1.31/24"
  47. # 修改eth0网络连接的IPv4地址为192.168.1.31,子网掩码为 24。
  48. #
  49. # "nmcli con mod eth0 ipv4.gateway 192.168.1.1"
  50. # 修改eth0网络连接的IPv4网关为192.168.1.1。
  51. #
  52. # "nmcli con mod eth0 ipv4.method manual"
  53. # 将eth0网络连接的IPv4配置方法设置为手动。
  54. #
  55. # "nmcli con mod eth0 ipv4.dns "8.8.8.8"
  56. # 将eth0网络连接的IPv4 DNS服务器设置为 8.8.8.8。
  57. #
  58. # "nmcli con up eth0"
  59. # 启动eth0网络连接。
  60. #
  61. # 总体来说,这条命令是通过SSH远程登录到指定的主机,并使用网络管理命令 (nmcli) 修改eth0网络连接的配置,包括IP地址、网关、配置方法和DNS服务器,并启动该网络连接。
  62. # 没有IPv6选择不配置即可
  63. ssh root@192.168.1.31 "nmcli con mod eth0 ipv6.addresses fc00:43f4:1eea:1::10; nmcli con mod eth0 ipv6.gateway fc00:43f4:1eea:1::1; nmcli con mod eth0 ipv6.method manual; nmcli con mod eth0 ipv6.dns "2400:3200::1"; nmcli con up eth0"
  64. ssh root@192.168.1.32 "nmcli con mod eth0 ipv6.addresses fc00:43f4:1eea:1::20; nmcli con mod eth0 ipv6.gateway fc00:43f4:1eea:1::1; nmcli con mod eth0 ipv6.method manual; nmcli con mod eth0 ipv6.dns "2400:3200::1"; nmcli con up eth0"
  65. ssh root@192.168.1.33 "nmcli con mod eth0 ipv6.addresses fc00:43f4:1eea:1::30; nmcli con mod eth0 ipv6.gateway fc00:43f4:1eea:1::1; nmcli con mod eth0 ipv6.method manual; nmcli con mod eth0 ipv6.dns "2400:3200::1"; nmcli con up eth0"
  66. ssh root@192.168.1.34 "nmcli con mod eth0 ipv6.addresses fc00:43f4:1eea:1::40; nmcli con mod eth0 ipv6.gateway fc00:43f4:1eea:1::1; nmcli con mod eth0 ipv6.method manual; nmcli con mod eth0 ipv6.dns "2400:3200::1"; nmcli con up eth0"
  67. ssh root@192.168.1.35 "nmcli con mod eth0 ipv6.addresses fc00:43f4:1eea:1::50; nmcli con mod eth0 ipv6.gateway fc00:43f4:1eea:1::1; nmcli con mod eth0 ipv6.method manual; nmcli con mod eth0 ipv6.dns "2400:3200::1"; nmcli con up eth0"
  68. # 参数解释
  69. #
  70. # ssh root@192.168.1.31
  71. # 通过SSH连接到IP地址为192.168.1.31的远程主机,使用root用户进行登录。
  72. #
  73. # "nmcli con mod eth0 ipv6.addresses fc00:43f4:1eea:1::10"
  74. # 使用nmcli命令修改eth0接口的IPv6地址为fc00:43f4:1eea:1::10。
  75. #
  76. # "nmcli con mod eth0 ipv6.gateway fc00:43f4:1eea:1::1"
  77. # 使用nmcli命令修改eth0接口的IPv6网关为fc00:43f4:1eea:1::1。
  78. #
  79. # "nmcli con mod eth0 ipv6.method manual"
  80. # 使用nmcli命令将eth0接口的IPv6配置方法修改为手动配置。
  81. #
  82. # "nmcli con mod eth0 ipv6.dns "2400:3200::1"
  83. # 使用nmcli命令设置eth0接口的IPv6 DNS服务器为2400:3200::1。
  84. #
  85. # "nmcli con up eth0"
  86. # 使用nmcli命令启动eth0接口。
  87. #
  88. # 这个命令的目的是在远程主机上配置eth0接口的IPv6地址、网关、配置方法和DNS服务器,并启动eth0接口。
  89. # 查看网卡配置
  90. # nmcli device show eth0
  91. # nmcli con show eth0
  92. [root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
  93. TYPE=Ethernet
  94. PROXY_METHOD=none
  95. BROWSER_ONLY=no
  96. BOOTPROTO=none
  97. DEFROUTE=yes
  98. IPV4_FAILURE_FATAL=no
  99. IPV6INIT=yes
  100. IPV6_AUTOCONF=yes
  101. IPV6_DEFROUTE=yes
  102. IPV6_FAILURE_FATAL=no
  103. IPV6_ADDR_GEN_MODE=stable-privacy
  104. NAME=eth0
  105. UUID=2aaddf95-3f36-4a48-8626-b55ebf7f53e7
  106. DEVICE=eth0
  107. ONBOOT=yes
  108. IPADDR=192.168.1.31
  109. PREFIX=24
  110. GATEWAY=192.168.1.1
  111. DNS1=8.8.8.8
  112. [root@localhost ~]#
  113. # 参数解释
  114. #
  115. # TYPE=Ethernet
  116. # 指定连接类型为以太网。
  117. #
  118. # PROXY_METHOD=none
  119. # 指定不使用代理方法。
  120. #
  121. # BROWSER_ONLY=no
  122. # 指定不仅仅在浏览器中使用代理。
  123. #
  124. # BOOTPROTO=none
  125. # 指定自动分配地址的方式为无(即手动配置IP地址)。
  126. #
  127. # DEFROUTE=yes
  128. # 指定默认路由开启。
  129. #
  130. # IPV4_FAILURE_FATAL=no
  131. # 指定IPv4连接失败时不宣告严重错误。
  132. #
  133. # IPV6INIT=yes
  134. # 指定启用IPv6。
  135. #
  136. # IPV6_AUTOCONF=no
  137. # 指定不自动配置IPv6地址。
  138. #
  139. # IPV6_DEFROUTE=yes
  140. # 指定默认IPv6路由开启。
  141. #
  142. # IPV6_FAILURE_FATAL=no
  143. # 指定IPv6连接失败时不宣告严重错误。
  144. #
  145. # IPV6_ADDR_GEN_MODE=stable-privacy
  146. # 指定IPv6地址生成模式为稳定隐私模式。
  147. #
  148. # NAME=eth0
  149. # 指定设备名称为eth0。
  150. #
  151. # UUID=424fd260-c480-4899-97e6-6fc9722031e8
  152. # 指定设备的唯一标识符。
  153. #
  154. # DEVICE=eth0
  155. # 指定设备名称为eth0。
  156. #
  157. # ONBOOT=yes
  158. # 指定开机自动启用这个连接。
  159. #
  160. # IPADDR=192.168.1.31
  161. # 指定IPv4地址为192.168.1.31。
  162. #
  163. # PREFIX=24
  164. # 指定IPv4地址的子网掩码为24。
  165. #
  166. # GATEWAY=192.168.8.1
  167. # 指定IPv4的网关地址为192.168.8.1。
  168. #
  169. # DNS1=8.8.8.8
  170. # 指定首选DNS服务器为8.8.8.8。
  171. #
  172. # IPV6ADDR=fc00:43f4:1eea:1::10/128
  173. # 指定IPv6地址为fc00:43f4:1eea:1::10,子网掩码为128。
  174. #
  175. # IPV6_DEFAULTGW=fc00:43f4:1eea:1::1
  176. # 指定IPv6的默认网关地址为fc00:43f4:1eea:1::1。
  177. #
  178. # DNS2=2400:3200::1
  179. # 指定备用DNS服务器为2400:3200::1。
复制代码
设置主机名
  1. hostnamectl set-hostname k8s-master01
  2. hostnamectl set-hostname k8s-master02
  3. hostnamectl set-hostname k8s-master03
  4. hostnamectl set-hostname k8s-node01
  5. hostnamectl set-hostname k8s-node02
  6. # 参数解释
  7. #
  8. # 参数: set-hostname
  9. # 解释: 这是hostnamectl命令的一个参数,用于设置系统的主机名。
  10. #
  11. # 参数: k8s-master01
  12. # 解释: 这是要设置的主机名,将系统的主机名设置为"k8s-master01"。
复制代码
设置yum源
  1. # 其他系统的源地址
  2. # https://mirrors.tuna.tsinghua.edu.cn/help/
  3. # 对于 Ubuntu
  4. sed -i 's/cn.archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
  5. # 对于 CentOS 7
  6. sudo sed -e 's|^mirrorlist=|#mirrorlist=|g' \
  7.          -e 's|^#baseurl=http://mirror.centos.org/centos|baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos|g' \
  8.          -i.bak \
  9.          /etc/yum.repos.d/CentOS-*.repo
  10. # 对于 CentOS 8
  11. sudo sed -e 's|^mirrorlist=|#mirrorlist=|g' \
  12.          -e 's|^#baseurl=http://mirror.centos.org/$contentdir|baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos|g' \
  13.          -i.bak \
  14.          /etc/yum.repos.d/CentOS-*.repo
  15. # 对于私有仓库
  16. sed -e 's|^mirrorlist=|#mirrorlist=|g' -e 's|^#baseurl=http://mirror.centos.org/\$contentdir|baseurl=http://192.168.1.123/centos|g' -i.bak  /etc/yum.repos.d/CentOS-*.repo
  17. # 参数解释
  18. #
  19. # 以上命令是用于更改系统软件源的配置,以便从国内镜像站点下载软件包和更新。
  20. #
  21. # 对于 Ubuntu 系统,将 /etc/apt/sources.list 文件中的软件源地址 cn.archive.ubuntu.com 替换为 mirrors.ustc.edu.cn。
  22. #
  23. # 对于 CentOS 7 系统,将 /etc/yum.repos.d/CentOS-*.repo 文件中的 mirrorlist 注释掉,并将 baseurl 的值替换为 https://mirrors.tuna.tsinghua.edu.cn/centos。
  24. #
  25. # 对于 CentOS 8 系统,同样将 /etc/yum.repos.d/CentOS-*.repo 文件中的 mirrorlist 注释掉,并将 baseurl 的值替换为 https://mirrors.tuna.tsinghua.edu.cn/centos。
  26. #
  27. # 对于私有仓库,将 /etc/yum.repos.d/CentOS-*.repo 文件中的 mirrorlist 注释掉,并将 baseurl 的值替换为私有仓库地址 http://192.168.1.123/centos。
  28. #
  29. # 这些命令通过使用 sed 工具和正则表达式,对相应的配置文件进行批量的替换操作,从而更改系统软件源配置。
复制代码
安装一些必备工具
  1. # 对于 Ubuntu
  2. apt update && apt upgrade -y && apt install -y wget psmisc vim net-tools nfs-kernel-server telnet lvm2 git tar curl
  3. # 对于 CentOS 7
  4. yum update -y && yum -y install  wget psmisc vim net-tools nfs-utils telnet yum-utils device-mapper-persistent-data lvm2 git tar curl
  5. # 对于 CentOS 8
  6. yum update -y && yum -y install wget psmisc vim net-tools nfs-utils telnet yum-utils device-mapper-persistent-data lvm2 git network-scripts tar curl
复制代码
关闭防火墙
  1. # Ubuntu忽略,CentOS执行
  2. systemctl disable --now firewalld
复制代码
关闭SELinux
  1. # Ubuntu忽略,CentOS执行
  2. setenforce 0
  3. sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
  4. # 参数解释
  5. #
  6. # setenforce 0
  7. # 此命令用于设置 SELinux 的执行模式。0 表示关闭 SELinux。
  8. #
  9. # sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
  10. # 该命令使用 sed 工具来编辑 /etc/selinux/config 文件。其中 '-i' 参数表示直接修改原文件,而不是输出到终端或另一个文件。's#SELINUX=enforcing#SELINUX=disabled#g' 是 sed 的替换命令,它将文件中所有的 "SELINUX=enforcing" 替换为 "SELINUX=disabled"。这里的 '#' 是分隔符,用于替代传统的 '/' 分隔符,以避免与路径中的 '/' 冲突。
复制代码
关闭互换分区
  1. sed -ri 's/.*swap.*/#&/' /etc/fstab
  2. swapoff -a && sysctl -w vm.swappiness=0
  3. cat /etc/fstab
  4. # /dev/mapper/centos-swap swap                    swap    defaults        0 0
  5. # 参数解释:
  6. #
  7. # -ri: 这个参数用于在原文件中替换匹配的模式。-r表示扩展正则表达式,-i允许直接修改文件。
  8. # 's/.*swap.*/#&/': 这是一个sed命令,用于在文件/etc/fstab中找到包含swap的行,并在行首添加#来注释掉该行。
  9. # /etc/fstab: 这是一个文件路径,即/etc/fstab文件,用于存储文件系统表。
  10. # swapoff -a: 这个命令用于关闭所有启用的交换分区。
  11. # sysctl -w vm.swappiness=0: 这个命令用于修改vm.swappiness参数的值为0,表示系统在物理内存充足时更倾向于使用物理内存而非交换分区。
复制代码
网络设置(俩种方式二选一)

[code]# Ubuntu忽略,CentOS执行# 方式一# systemctl disable --now NetworkManager# systemctl start network && systemctl enable network# 方式二cat > /etc/NetworkManager/conf.d/calico.conf  /etc/chrony.conf  /etc/chrony.conf > /etc/security/limits.conf  /etc/modules-load.d/ipvs.conf
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

tsx81428

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表