反重力喷气式车 發表於 2025-2-8 10:39:00

ubuntu 24.04 安装 k8s 1.28

<p>以下是在 Ubuntu 上安装 Kubernetes (k8s) 1 主 2 node 集群的详细步骤:</p>
<h3 id="虚拟机配置">虚拟机配置</h3>
<h4 id="1-检查-netplan-配置文件">1. 检查 Netplan 配置文件</h4>
<p>确保你的 Netplan 配置文件(通常位于 <code>/etc/netplan/</code> 目录下,例如 <code>01-netcfg.yaml</code>)内容正确。以下是一个正确的静态 IP 配置示例:</p>
<p>yaml复制</p>
<pre><code class="language-yaml">network:
version: 2
ethernets:
    enp0s5:
      addresses:
      - 192.168.1.100/24
      routes:
      - to: default
          via: 192.168.1.1
      nameservers:
      addresses:
          - 8.8.8.8
          - 8.8.4.4
</code></pre>
<h4 id="2-应用-netplan-配置">2. 应用 Netplan 配置</h4>
<h4 id="运行以下命令重新应用-netplan-配置">运行以下命令重新应用 Netplan 配置:</h4>
<h4 id="bash复制">bash复制</h4>
<h4 id="sudo-netplan-apply">sudo netplan apply</h4>
<h3 id="_"></h3>
<h4 id="3-检查网络服务状态">3. 检查网络服务状态</h4>
<p>运行以下命令检查网络服务的状态:</p>
<p>bash复制</p>
<pre><code class="language-bash">sudo systemctl status systemd-networkd
</code></pre>
<p>如果服务未运行,可以尝试重启它:</p>
<p>bash复制</p>
<pre><code class="language-bash">sudo systemctl restart systemd-networkd
</code></pre>
<h4 id="4配置时区">4.配置时区</h4>
<p>要将Ubuntu的时区设置为北京时间(中国标准时间,CST),可以按照以下步骤进行:</p>
<p><code>timedatectl</code>是一个用于管理系统时间和时区的命令行工具。</p>
<ol>
<li><strong>列出可用的时区</strong>:您可以列出所有可用的时区以确认时区名称:</li>
</ol>
<pre><code class="language-bash">timedatectl list-timezones | grep Shanghai
</code></pre>
<p>您应该会看到<code>Asia/Shanghai</code>,这就是北京时间。</p>
<ol start="2">
<li><strong>设置时区为</strong><code>Asia/Shanghai</code>:使用以下命令将时区设置为北京时间:</li>
</ol>
<pre><code class="language-bash">sudo timedatectl set-timezone Asia/Shanghai
</code></pre>
<ol start="3">
<li><strong>验证时区设置</strong>:确认时区已正确设置:</li>
</ol>
<pre><code class="language-bash">timedatectl
</code></pre>
<p>输出中应该显示<code>Time zone: Asia/Shanghai</code>。</p>
<h3 id="环境准备">环境准备</h3>
<ol>
<li><strong>准备三台 Ubuntu 服务器</strong>:
<ul>
<li>1 台主节点(Master)</li>
<li>2 台工作节点(Worker)</li>
<li>确保所有节点可以互相通信,关闭防火墙和 SELinux(Ubuntu 默认没有 SELinux)。</li>
</ul>
</li>
<li><strong>配置主机名和 hosts 文件</strong>(在所有节点上执行):</li>
</ol>
<p>bash复制</p>
<pre><code class="language-bash"># 设置主机名
hostnamectl set-hostname &lt;node-name&gt;# 例如:k8s-master, k8s-node1, k8s-node2

# 修改 /etc/hosts 文件
cat &gt;&gt; /etc/hosts &lt;&lt; EOF
&lt;master-ip&gt; k8s-master
&lt;node1-ip&gt; k8s-node1
&lt;node2-ip&gt; k8s-node2
EOF
</code></pre>
<ol start="3">
<li><strong>关闭防火墙和 Swap</strong>(在所有节点上执行):</li>
</ol>
<p>bash复制</p>
<pre><code class="language-bash"># 关闭防火墙
sudo systemctl stop ufw
sudo systemctl disable ufw

# 关闭 Swap
sudo swapoff -a
sudo sed -i '/swap/d' /etc/fstab
</code></pre>
<ol start="4">
<li><strong>配置网络设置</strong>(在所有节点上执行):</li>
</ol>
<p>bash复制</p>
<pre><code class="language-bash"># 添加 sysctl 配置
cat &gt; /etc/sysctl.d/k8s.conf &lt;&lt; EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
vm.swappiness = 0
EOF

# 加载模块并应用配置
sudo modprobe br_netfilter
sudo sysctl --system
</code></pre>
<ol start="5">
<li><strong>时间同步</strong>(在所有节点上执行):</li>
</ol>
<p>bash复制</p>
<pre><code class="language-bash">sudo apt install -y chrony
sudo systemctl start chrony
sudo systemctl enable chrony
</code></pre>
<h3 id="apt-源替换成-阿里云">apt 源替换成 阿里云</h3>
<p>在 Ubuntu 24.04 中,软件源配置文件的路径已经从传统的 <code>/etc/apt/sources.list</code> 变更为 <code>/etc/apt/sources.list.d/ubuntu.sources</code>。以下是将 Ubuntu 24.04 的镜像源更换为阿里云镜像源的步骤:</p>
<h3 id="步骤-1备份原有的-ubuntusources-文件">步骤 1:备份原有的 <code>ubuntu.sources</code> 文件</h3>
<p>在进行任何修改之前,建议先备份原有的 <code>ubuntu.sources</code> 文件:</p>
<p>bash复制</p>
<pre><code class="language-bash">sudo cp /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources.bak
</code></pre>
<h3 id="步骤-2编辑-ubuntusources-文件">步骤 2:编辑 <code>ubuntu.sources</code> 文件</h3>
<p>使用文本编辑器(如 <code>nano</code> 或 <code>vim</code>)打开 <code>/etc/apt/sources.list.d/ubuntu.sources</code> 文件:</p>
<p>bash复制</p>
<pre><code class="language-bash">sudo nano /etc/apt/sources.list.d/ubuntu.sources
</code></pre>
<h3 id="步骤-3替换为阿里云的镜像源">步骤 3:替换为阿里云的镜像源</h3>
<p>将文件内容替换为以下内容:</p>
<p>plaintext复制</p>
<pre><code class="language-plain">Types: deb
URIs: http://mirrors.aliyun.com/ubuntu/
Suites: noble noble-updates noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
</code></pre>
<h3 id="步骤-4保存并退出">步骤 4:保存并退出</h3>
<p>在 <code>nano</code> 编辑器中,按 <code>Ctrl + O</code> 保存文件,然后按 <code>Ctrl + X</code> 退出。</p>
<h3 id="步骤-5更新软件源">步骤 5:更新软件源</h3>
<p>运行以下命令更新软件源:</p>
<p>bash复制</p>
<pre><code class="language-bash">sudo apt update
</code></pre>
<h3 id="步骤-6验证镜像源">步骤 6:验证镜像源</h3>
<p>运行以下命令查看当前使用的镜像源:</p>
<p>bash复制</p>
<pre><code class="language-bash">cat /etc/apt/sources.list.d/ubuntu.sources
</code></pre>
<p>你应该会看到阿里云的镜像源地址。</p>
<h3 id="步骤-7升级软件包可选">步骤 7:升级软件包(可选)</h3>
<p>如果你希望升级系统中的软件包,可以运行以下命令:</p>
<p>bash复制</p>
<pre><code class="language-bash">sudo apt upgrade
</code></pre>
<p>通过以上步骤,你已经成功将 Ubuntu 24.04 的镜像源更换为阿里云的镜像源。这将提高软件更新和安装的速度,特别是在中国大陆地区。</p>
<h3 id="注意-arm-架构">注意 arm 架构</h3>
<p>根据你的描述,你在使用 Ubuntu 24.04 的 arm64 架构时,发现使用自带的镜像源可以正常 <code>update</code>,但替换成清华和阿里云的镜像源后出现了问题。这可能是由于镜像源的路径或配置不正确导致的。</p>
<h3 id="解决方法">解决方法</h3>
<h4 id="1-检查镜像源路径">1. 检查镜像源路径</h4>
<p>对于 arm64 架构,清华和阿里云的镜像源路径需要特别处理。你需要在 URI 中添加 <code>-ports</code> 后缀。以下是正确的配置:</p>
<h5 id="清华源">清华源</h5>
<p>plaintext复制</p>
<pre><code class="language-plain">Types: deb
URIs: http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/
Suites: noble noble-updates noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
</code></pre>
<h5 id="阿里云源">阿里云源</h5>
<p>plaintext复制</p>
<pre><code class="language-plain">Types: deb
URIs: http://mirrors.aliyun.com/ubuntu-ports/
Suites: noble noble-updates noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
</code></pre>
<h4 id="2-修改-etcaptsourceslistdubuntusources-文件">2. 修改 <code>/etc/apt/sources.list.d/ubuntu.sources</code> 文件</h4>
<p>将 <code>/etc/apt/sources.list.d/ubuntu.sources</code> 文件内容替换为上述配置之一。例如,使用清华源:</p>
<p>bash复制</p>
<pre><code class="language-bash">sudo nano /etc/apt/sources.list.d/ubuntu.sources
</code></pre>
<p>将文件内容替换为:</p>
<p>plaintext复制</p>
<pre><code class="language-plain">Types: deb
URIs: http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/
Suites: noble noble-updates noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
</code></pre>
<p>保存并退出。</p>
<h4 id="3-更新软件源">3. 更新软件源</h4>
<p>运行以下命令更新软件源:</p>
<p>bash复制</p>
<pre><code class="language-bash">sudo apt update
</code></pre>
<h4 id="4-验证镜像源">4. 验证镜像源</h4>
<p>运行以下命令查看当前使用的镜像源:</p>
<p>bash复制</p>
<pre><code class="language-bash">cat /etc/apt/sources.list.d/ubuntu.sources
</code></pre>
<p>你应该会看到清华源或阿里云源的地址。</p>
<h4 id="5-升级软件包可选">5. 升级软件包(可选)</h4>
<p>如果你希望升级系统中的软件包,可以运行以下命令:</p>
<p>bash复制</p>
<pre><code class="language-bash">sudo apt upgrade
</code></pre>
<h3 id="其他建议">其他建议</h3>
<ul>
<li><strong>检查网络连接</strong>:确保你的网络连接正常,可以访问外部网站。</li>
<li><strong>清理缓存</strong>:运行 <code>sudo apt clean</code> 清理缓存,然后重新更新软件源。</li>
<li><strong>检查系统版本</strong>:确保你的系统版本是 Ubuntu 24.04,可以运行 <code>lsb_release -a</code> 查看系统版本信息。</li>
</ul>
<p>如果问题仍然存在,可以尝试访问其他镜像源,或者检查清华和阿里云镜像源的官方文档,了解是否支持你的系统版本和架构。</p>
<h3 id="开始安装">开始安装</h3>
<p>在国内安装Kubernetes时,由于网络限制,可能无法直接访问外网资源。以下是适用于国内环境的安装指南:</p>
<h3 id="1-更新系统">1. 更新系统</h3>
<p>首先,确保系统软件包是最新的:</p>
<pre><code class="language-bash">sudo apt update
sudo apt upgrade -y
</code></pre>
<h3 id="2-安装必要的依赖">2. 安装必要的依赖</h3>
<p>安装<code>apt-transport-https</code>、<code>ca-certificates</code>和<code>curl</code>:</p>
<pre><code class="language-bash">sudo apt install -y apt-transport-https ca-certificates curl
</code></pre>
<h3 id="3-添加kubernetes的apt源">3. 添加Kubernetes的APT源</h3>
<p>导入阿里云的GPG密钥:</p>
<pre><code class="language-bash">curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
</code></pre>
<p>添加阿里云的Kubernetes APT源:</p>
<pre><code class="language-bash">cat &lt;&lt;EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
</code></pre>
<h3 id="4-更新apt包索引">4. 更新APT包索引</h3>
<pre><code class="language-bash">sudo apt update
</code></pre>
<p>这个警告是因为APT正在逐步弃用将密钥存储在<code>/etc/apt/trusted.gpg</code>文件中的做法。为了消除这个警告,我们需要将密钥移到<code>/etc/apt/trusted.gpg.d/</code>目录中,并确保它是以二进制格式存储的。以下是解决方法:</p>
<h3 id="解决方法-1">解决方法</h3>
<ol>
<li><strong>删除旧的密钥</strong>:首先,删除旧的密钥:</li>
</ol>
<pre><code class="language-bash">sudo apt-key del B53DC80D13EDEF05
</code></pre>
<ol start="2">
<li><strong>重新添加密钥到正确的位置</strong>:使用<code>gpg --dearmor</code>将密钥转换为二进制格式并存储在<code>/etc/apt/trusted.gpg.d/</code>目录中:</li>
</ol>
<pre><code class="language-bash">curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/kubernetes-aliyun.gpg &gt; /dev/null
</code></pre>
<ol start="3">
<li><strong>更新APT包索引</strong>:重新运行<code>apt update</code>以确保警告消失:</li>
</ol>
<pre><code class="language-bash">sudo apt update
</code></pre>
<h3 id="结论">结论</h3>
<p>通过以上步骤,您应该能够解决这个警告。确保密钥文件是二进制格式的<code>.gpg</code>文件,并存储在<code>/etc/apt/trusted.gpg.d/</code>目录中,以便APT能够正确识别和使用它。这样做不仅符合APT的最新建议,还能避免将来可能的兼容性问题。</p>
<h3 id="5-安装kubernetes组件">5. 安装Kubernetes组件</h3>
<p>安装<code>kubelet</code>、<code>kubeadm</code>和<code>kubectl</code>:</p>
<pre><code class="language-bash">sudo apt install -y kubelet kubeadm kubectl
</code></pre>
<p>确保这些包不会被自动更新:</p>
<pre><code class="language-bash">sudo apt-mark hold kubelet kubeadm kubectl
</code></pre>
<h3 id="6-禁用交换分区">6. 禁用交换分区</h3>
<p>Kubernetes要求禁用交换分区:</p>
<pre><code class="language-bash">sudo swapoff -a
</code></pre>
<p>为了永久禁用交换,编辑<code>/etc/fstab</code>文件并注释掉任何交换分区的行。</p>
<p>如果所有节点都显示为<code>Ready</code>,则说明Kubernetes集群已成功安装并运行。</p>
<h3 id="在kubernetes集群中某些步骤需要在所有节点上执行而其他步骤仅在主节点或工作节点上执行以下是详细的步骤说明">在Kubernetes集群中,某些步骤需要在所有节点上执行,而其他步骤仅在主节点或工作节点上执行。以下是详细的步骤说明:</h3>
<h3 id="1-在所有节点上执行">1. 在所有节点上执行</h3>
<h4 id="安装必要的依赖">安装必要的依赖</h4>
<p>在所有节点上安装<code>apt-transport-https</code>、<code>ca-certificates</code>和<code>curl</code>:</p>
<pre><code class="language-bash">sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl
</code></pre>
<h4 id="添加kubernetes的apt源">添加Kubernetes的APT源</h4>
<p>在所有节点上添加阿里云的Kubernetes APT源:</p>
<pre><code class="language-bash">curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/kubernetes-aliyun.gpg &gt; /dev/null

cat &lt;&lt;EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF

sudo apt update
</code></pre>
<h4 id="安装kubernetes组件">安装Kubernetes组件</h4>
<p>在所有节点上安装<code>kubelet</code>、<code>kubeadm</code>和<code>kubectl</code>:</p>
<pre><code class="language-bash">sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
</code></pre>
<h4 id="安装并配置containerd">安装并配置containerd</h4>
<p>在所有节点上安装并配置containerd:</p>
<pre><code class="language-bash">sudo apt install -y containerd

sudo mkdir -p /etc/containerd
sudo containerd config default | sudo tee /etc/containerd/config.toml
### 注意registry.aliyuncs.com/google_containers/pause:3.9
sudo systemctl restart containerd
sudo systemctl enable containerd
</code></pre>
<h4 id="禁用交换分区">禁用交换分区</h4>
<p>在所有节点上禁用交换分区:</p>
<pre><code class="language-bash">sudo swapoff -a
</code></pre>
<p>编辑<code>/etc/fstab</code>文件,注释掉任何交换分区的行以永久禁用。</p>
<h3 id="2-在主节点上执行">2. 在主节点上执行</h3>
<h4 id="初始化kubernetes集群">初始化Kubernetes集群</h4>
<p>在主节点上初始化Kubernetes集群:</p>
<pre><code class="language-bash">sudo kubeadm init --image-repository registry.aliyuncs.com/google_containers
</code></pre>
<p>完成后,按照输出中的指示配置<code>kubectl</code>:</p>
<pre><code class="language-bash">mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
</code></pre>
<h4 id="部署网络插件">部署网络插件</h4>
<p>在主节点上部署网络插件(以Calico为例):</p>
<pre><code class="language-bash">kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
</code></pre>
<h3 id="3-在工作节点上执行">3. 在工作节点上执行</h3>
<h4 id="加入kubernetes集群">加入Kubernetes集群</h4>
<p>在每个工作节点上,使用<code>kubeadm join</code>命令加入集群。该命令在初始化主节点时会输出,类似于:</p>
<pre><code class="language-bash">kubeadm join &lt;master-ip&gt;:&lt;port&gt; --token &lt;token&gt; --discovery-token-ca-cert-hash sha256:&lt;hash&gt;
</code></pre>
<h3 id="4-验证集群状态">4. 验证集群状态</h3>
<p>在主节点上,检查节点状态:</p>
<pre><code class="language-bash">kubectl get nodes
</code></pre>
<p>如果所有节点都显示为<code>Ready</code>,则说明Kubernetes集群已成功安装并运行。</p>
<p>通过以上步骤,您应该能够在所有节点上正确安装和配置Kubernetes集群。请根据您的具体需求选择合适的网络插件和配置。</p><br><br>
来源:https://www.cnblogs.com/chunlin99x/p/18703775
頁: [1]
查看完整版本: ubuntu 24.04 安装 k8s 1.28