一篇可供参考的 K8S 落地实践经验

打印 上一主题 下一主题

主题 1843|帖子 1843|积分 5529

前言

k8s 即 Kubernetes,是一个开源的容器编排引擎,用来对容器化应用进行自动化部署、 扩缩和管理
本篇文章将分享 k8s v1.18.8 的安装,以及其面板,监控,部署服务,使用Ingress-Ningx进行负载均衡的实践
因为公司用的这个老版本,并且后面要负责搭建,担心无法复刻,趁此周末,实践一二,确认可行,遂与君分享。
虚拟机准备


  • 宿主机:Windows10
  • 虚拟机工具:Hyper-V 10.0.19041.1
  • 虚拟机 Linux 系统:CentOS 8.5
  • 已安装软件:docker (v2.21.0)及 docker compose(24.0.6)
  • Hyper-V虚拟机一览


  • IP 及主机名
  1. 192.168.123.100 master
  2. 192.168.123.101 worker01
  3. 192.168.123.102 worker02
复制代码
CentOS8.5 设置固定 IP


  • 设置IP及网关:vi /etc/sysconfig/network-scripts/ifcfg-eth0
  1. TYPE=Ethernet
  2. PROXY_METHOD=none
  3. BROWSER_ONLY=no
  4. DEFROUTE=yes
  5. IPV4_FAILURE_FATAL=no
  6. IPV6INIT=yes
  7. IPV6_AUTOCONF=yes
  8. IPV6_DEFROUTE=yes
  9. IPV6_FAILURE_FATAL=no
  10. NAME=eth0
  11. DEVICE=eth0
  12. ONBOOT=yes
  13. PREFIX=24
  14. IPV6_PRIVACY=no
  15. # 设置IP及网关
  16. BOOTPROTO=static
  17. IPADDR=192.168.123.100
  18. GATEWAY=192.168.123.1
复制代码
CentOS8.5 联网检查


  • 配置好网络后先测试 curl 是否可以正常访问网络 curl  ``http://mirrors.aliyun.com,如果提示: curl: (6) Could not resolve host:  ``mirrors.aliyun.com ,则需要检查dns设置
  • cat /etc/resolv.conf 默认应该是网关的地址,也可以自行修改为其他公共dns
  1. nameserver 192.168.123.1
复制代码
CentOS8.5 设置主机名


  • 查看主机信息:hostnamectl,通过导入虚拟机创建的主机信息除了mac地址其他基本都一样
  • 设置主机名:hostnamectl set-hostname 主机名
  1. # 查看hostname
  2. hostnamectl --static
  3. #设置 hostname 对应机器设置
  4. # 192.168.123.100
  5. hostnamectl set-hostname master
  6. # 192.168.123.101
  7. hostnamectl set-hostname worker01
  8. # 192.168.123.102
  9. hostnamectl set-hostname worker02
复制代码
确保每个节点上 MAC 地址的唯一性

可以在外部使用 PowerShell 查看 Hyper-V 虚拟机的地址,在导入时选择新注册会自动生成 Mac 地址,无需更改

  • centos8.5 查看mac地址:ip link show dev eth0


  • 外部使用 PowerShell 查看:(Get-VMNetworkAdapter -VMName "k8s-master").MacAddress

确保 product_uuid 的唯一性


  • 执行 sudo cat /sys/class/dmi/id/product_uuid 查看product_uuid 我这里因为都是复制的虚拟机,查出来是一样的的,所以需要修改


  • 修改需要关闭虚拟机后执行PowerShell脚本 ,文章总结
  • 外部查看Hyper-V虚拟机 UUID
  1. Get-VM "k8s-master" | % { (gwmi -Namespace root\virtualization\v2 -Class msvm_computersystem -Filter ('ElementName="{0}"' -f $_.Name)).GetRelated('msvm_virtualsystemsettingdata') | select BIOSGUID }
  2. Get-VM "k8s-worker01" | % { (gwmi -Namespace root\virtualization\v2 -Class msvm_computersystem -Filter ('ElementName="{0}"' -f $_.Name)).GetRelated('msvm_virtualsystemsettingdata') | select BIOSGUID }
  3. Get-VM "k8s-worker02" | % { (gwmi -Namespace root\virtualization\v2 -Class msvm_computersystem -Filter ('ElementName="{0}"' -f $_.Name)).GetRelated('msvm_virtualsystemsettingdata') | select BIOSGUID }
复制代码

  • PowerShell 修改 Hyper-V虚拟机 UUID
  1. #这里假设虚拟机的VMname是k8s-master,自行替换即可
  2. $VMname="k8s-master"
  3. $vmx = Get-WmiObject -Namespace root\virtualization\v2 -Class msvm_virtualsystemsettingdata
  4. #每次操作选择一台虚拟机
  5. $CurrentSettingsData = $vmx | Where-Object { $_.ElementName -eq $VMname }
  6. #检查一下老的GUID
  7. $CurrentSettingsData.BIOSGUID
  8. #生成新GUID
  9. $GUID = [System.Guid]::NewGuid()
  10. #重新写入GUID,注意要带{},这是非常重要的细节
  11. $CurrentSettingsData.BIOSGUID = "{" + $GUID.Guid.ToUpper() + "}"
  12. #生成一个ModifySystemSettings的空对象
  13. $VMMS = Get-WmiObject -Namespace root\virtualization\v2 -Class msvm_virtualsystemmanagementservice
  14. $ModifySystemSettingsParams = $VMMS.GetMethodParameters('ModifySystemSettings')
  15. #配置这个属性,需要特殊的转换方式
  16. $ModifySystemSettingsParams.SystemSettings = $CurrentSettingsData.GetText([System.Management.TextFormat]::CimDtd20)
  17. #写入
  18. $VMMS.InvokeMethod('ModifySystemSettings', $ModifySystemSettingsParams, $null)
复制代码

  • 开机后查询可以看到已经修改成功

确保 Machine ID 的唯一性


  • 执行 /etc/machine-id 或使用 hostnamectl 发现机器id是一样的


  • 重新生成了机器id
  1. sudo cp /etc/machine-id /etc/machine-id.backup
  2. sudo rm /etc/machine-id
  3. sudo systemd-machine-id-setup
  4. cat /etc/machine-id
复制代码

  • 执行结果

检查端口是否被占用



  • centos8.5 使用 ss 查询端口是否使用
  1. ss -tuln | grep -E "6443|2379|2380|10250|10259|10257|30000-32767"
复制代码

  • 执行结果,无占用

安装 K8S v1.18.8

都2023年了,为什么还是 v1.18.8?
因为公司用的这个版本,并且后面要负责搭建,趁此周末,实践一二,确认可行,遂与君分享。
节点初始化


  • 执行主机: master ,worker01,worker02
  • 关闭防火墙
  • 关闭swap分区
  • 允许 iptables 检查桥接流量
  • 添加阿里云 yum 源
[code]# 关闭防火墙systemctl stop firewalld# 设置永久不开启防火墙systemctl disable firewalld# 关闭swap 分区 swapoff -a   #永久关闭sed -ri 's/.*swap.*/#&/' /etc/fstab# 将 SELinux 设置为 permissive 模式(相当于将其禁用)setenforce 0sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config# 允许 iptables 检查桥接流量cat > /etc/sysctl.d/k8s.conf  /etc/yum.repos.d/kubernetes.repo > /etc/hosts

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

河曲智叟

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表