2025,每天10分钟,跟我学K8S(四)- 搭建k8s(上)

本文初期将使用2台服务器作为k8s集群的节点,资源情况如下,免费服务器来源可以查看第二篇文章。

主机名内网IP硬件资源操作系统
k8s-master172.21.176.34C8GUbuntu20.04
k8s-node01172.21.176.42C4GUbuntu20.04

使用kubeadm来搭建属于自己的第一套k8s集群

1.修改系统参数

修改主机名

vim /etc/hosts

172.21.176.3 k8s-master

172.21.176.4 k8s-node01

关闭swap

sed -ri 's/^([^#].*swap.*)$/#\1/' /etc/fstab 
grep swap /etc/fstab 
swapoff -a 

关闭防火墙

ufw disable
systemctl disable  ufw

设置时区

timedatectl set-timezone Asia/Shanghai

echo 'LC_TIME=en_DK.UTF-8' >> /etc/default/locale

#重启后就会显示24小时制的

开启ipv4转发和网络桥接功能

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF

sysctl --system
sysctl net.ipv4.ip_forward
sysctl net.bridge.bridge-nf-call-iptables
sysctl net.bridge.bridge-nf-call-ip6tables

2.安装containerd

k8s在1.24版本之后,默认的后端为containerd,并且不再直接支持docker,这里就按照官方趋势,安装containerd

apt安装containerd

apt update && apt install -y containerd

#看下版本
containerd -v

#生成配置文件
mkdir -p /etc/containerd && \
containerd config default > /etc/containerd/config.toml

#修改cgroup
sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml

#修改pause镜像地址为阿里云地址
sed -i 's#sandbox_image = "registry.k8s.io/pause:3.8"#sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.8"#g' /etc/containerd/config.toml

#修改完毕后一定要重启服务
systemctl daemon-reload 
systemctl restart containerd.service 

3.使用kubeadm安装K8S

(截止2025年3月,k8s最新版本为1.32.2)

此处参考官网案例:安装 kubeadm | Kubernetes

由于k8s的默认镜像在google,内网环境或国内服务器不一定能访问通,所以此处将地址切换为阿里云镜像源

1、apt更新 和安装依赖

更新apt 包索引并安装使用 Kubernetes apt 仓库所需要的包:

sudo apt-get update
# apt-transport-https 可能是一个虚拟包(dummy package);如果是的话,你可以跳过安装这个包
sudo apt-get install -y apt-transport-https ca-certificates curl gpg

2、下载安装签名密钥

用于 Kubernetes 软件包仓库的公共签名密钥。所有仓库都使用相同的签名密钥:

# 如果 `/etc/apt/keyrings` 目录不存在,则应在 curl 命令之前创建它,请阅读下面的注释。
sudo mkdir -p -m 755 /etc/apt/keyrings

curl -fsSL https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.32/deb/Release.key |
    gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

    说明:

    在低于 Debian 12 和 Ubuntu 22.04 的发行版本中,/etc/apt/keyrings 默认不存在。 应在 curl 命令之前创建它。

    3、添加 Kubernetes apt 仓库

    请注意,此处使用的为 Kubernetes 1.32 的软件包; 对于其他 Kubernetes 次要版本,则需要更改 URL 中的 Kubernetes 次要版本以匹配你所需的次要版本 (你还应该检查正在阅读的安装文档是否为你计划安装的 Kubernetes 版本的文档)。

    # 此操作会覆盖 /etc/apt/sources.list.d/kubernetes.list 中现存的所有配置。
    echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.32/deb/ /" |
        tee /etc/apt/sources.list.d/kubernetes.list

    4、安装 kubelet、kubeadm 和 kubectl,并锁定其版本:

    sudo apt-get update
    sudo apt-get install -y kubelet kubeadm kubectl
    sudo apt-mark hold kubelet kubeadm kubectl

      5、查看kubeadm的版本

      上述步骤在2台服务器中都操作完毕后,可以通过kubeadm version命令会返回代码,里面显示了详细的版本信息,此处显示版本为v1.32.2

      root@k8s-master:~# kubeadm version
      kubeadm version: &version.Info{Major:"1", Minor:"32", GitVersion:"v1.32.2", GitCommit:"67a30c0adcf52bd3f56ff0893ce19966be12991f", GitTreeState:"clean", BuildDate:"2025-02-12T21:24:52Z", GoVersion:"go1.23.6", Compiler:"gc", Platform:"linux/amd64"}
      

      使用 kubeadm 创建集群

      master服务器中执行下方命令:

      kubeadm init \
        --apiserver-advertise-address=172.21.176.3 \
        --image-repository registry.aliyuncs.com/google_containers \
        --kubernetes-version v1.32.2 \
        --service-cidr=10.96.0.0/12 \
        --pod-network-cidr=10.244.0.0/16

      ①kubeadm 初始化命令

      ②指定kube-apiserver的通讯地址,如果有使用负载均衡可以填写负载均衡的地址

      ③下载镜像地址修改为阿里云镜像仓库

      ④指定k8s的安装版本

      ⑤指定k8s中service服务的IP地址段

      ⑥指定k8s中pod服务的IP地址段

      几分钟的等待后,会出现初始化完毕

      ①kubeadm 初始化前的检查

      ②创建一些证书文件

      ③初始化组件的配置文件(kube-apiserver,etcd,kubelet、controller-manager、scheduler)

      ④创建上面组件的pod

      ⑤kube-apiservice的健康检查

      ⑥创建一些权限规则和namespace

      ⑦提示下一步如何配置kubelct和使用k8s的root权限,后面会有具体讲解

      ⑧提示如何将其他节点注册到这个集群,这一步在node01节点上来操作

      查看节点

      通过kubectl get node命令可以看到此时集群中有多少个节点

      通过上面的命令,可以发现现在已经有一个节点加入了集群,但是状态为NotReady

      配置kubectl

              kubectl 是管理 k8s集群的命令行工具,刚才已经在所有的节点安装了 kubectl。Master 初始化完成后需要做一些配置工作,然后 kubectl 就能使用了。

      依照 kubeadm init 输出的第 ⑦ 步提示,推荐用 Linux 普通用户执行 kubectl(root 会有一些问题)。

      当前使用的ubuntu操作系统为root用户,就直接执行下面命令即可

      mkdir -p $HOME/.kube
      sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
      sudo chown $(id -u):$(id -g) $HOME/.kube/config
      

      这里如果使用k8s集群的root用户,就直接执行下面的命令即可

      export KUBECONFIG=/etc/kubernetes/admin.conf

      最后为了使用更便捷,启用 kubectl 命令的自动补全功能。

      echo "source <(kubectl completion bash)" >> ~/.bashrc
      

      这样 当前root用户就可以使用 kubectl 了。

      下节我们将安装 Pod 网络并添加 k8s-node01 完成集群部署。

      评论
      添加红包

      请填写红包祝福语或标题

      红包个数最小为10个

      红包金额最低5元

      当前余额3.43前往充值 >
      需支付:10.00
      成就一亿技术人!
      领取后你会自动成为博主和红包主的粉丝 规则
      hope_wisdom
      发出的红包
      实付
      使用余额支付
      点击重新获取
      扫码支付
      钱包余额 0

      抵扣说明:

      1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
      2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

      余额充值