Kubernetes(k8s)安装详细过程


前置准备:

  • 1个主节点和两个工作节点
    172.19.6.5 k8smaster.lab.com
    172.19.6.6 k8sworker1.lab.com
    172.19.6.9 k8sworker2.lab.com
  • 节点需求:
    OS: Ubuntu 22.04
    RAM:Minimum 2GB RAM or more
    CPU:Minimum 2 CPU cores / or 2 vCPU
    硬盘空间:20 GB free disk space on /var or more
    网路:每个节点间能够互联

1 每个节点设置hostname

主节点

sudo hostnamectl set-hostname "k8smaster.lab.com"

工作节点:

sudo hostnamectl set-hostname "k8sworker1.lab.com"   // 1st worker node
sudo hostnamectl set-hostname "k8sworker2.lab.com"   // 2nd worker node

在每个节点上的 /etc/hosts 文件中添加以下条目

172.19.6.5 k8smaster.lab.com
172.19.6.6 k8sworker1.lab.com
172.19.6.9 k8worker2.lab.com

2禁用swap并添加内核参数

sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

在所有节点上加载以下内核模块

sudo tee /etc/modules-load.d/containerd.conf <<EOF
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter

为 Kubernetes 设置以下内核参数,在 tee 命令下运行

sudo tee /etc/sysctl.d/kubernetes.conf <<EOT
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOT

重新加载以上更改,运行

sudo sysctl --system

3 安装Containerd Runtime

在本次安装中,我们为 Kubernetes 集群使用 containerd 运行时。 因此,要安装containerd,首先安装其依赖项。

sudo apt install -y curl gnupg2 software-properties-common apt-transport-https ca-certificates

启用docker存储库

sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/docker.gpg
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

现在,运行以下 apt 命令来安装 containerd

sudo apt update
sudo apt install -y containerd.io

配置containerd,以便开始使用systemd作为cgroup。

containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1
sudo sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml

restart并enable containerd服务

sudo systemctl restart containerd
sudo systemctl enable containerd

4 添加 Apt Kubernetes Repository

默认 Ubuntu 22.04 软件包存储库中不提供 Kubernetes 软件包。 所以我们需要添加 Kubernetes 存储库。 运行以下命令来下载公共签名密钥

curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.31/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

接下来,运行以下 echo 命令来添加 Kubernetes apt 存储库。

echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.31/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list

5) 安装Kubectl, Kubeadm and Kubelet

添加存储库后,在所有节点上安装 kubectl、kubelet 和 Kubeadm 等 Kubernetes 组件。 执行以下命令集

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

6安装Kubernetes Cluster

现在已经准备好初始化Kubernetes 集群了。 仅在主节点上运行以下 Kubeadm 命令。

sudo kubeadm init --control-plane-endpoint=k8smaster.lab.com

Output(出现错误):

root@k8smaster:~# kubeadm init --control-plane-endpoint=k8smaster.lab.com
I0406 12:36:17.596979    1531 version.go:256] remote version is much newer: v1.29.3; falling back to: stable-1.31
[init] Using Kubernetes version: v1.31.8
[preflight] Running pre-flight checks
error execution phase preflight: [preflight] Some fatal errors occurred:
        [ERROR Port-6443]: Port 6443 is in use
        [ERROR Port-10259]: Port 10259 is in use
        [ERROR Port-10257]: Port 10257 is in use
        [ERROR FileAvailable--etc-kubernetes-manifests-kube-apiserver.yaml]: /etc/kubernetes/manifests/kube-apiserver.yaml already exists
        [ERROR FileAvailable--etc-kubernetes-manifests-kube-controller-manager.yaml]: /etc/kubernetes/manifests/kube-controller-manager.yaml already exists
        [ERROR FileAvailable--etc-kubernetes-manifests-kube-scheduler.yaml]: /etc/kubernetes/manifests/kube-scheduler.yaml already exists
        [ERROR FileAvailable--etc-kubernetes-manifests-etcd.yaml]: /etc/kubernetes/manifests/etcd.yaml already exists
        [ERROR Port-10250]: Port 10250 is in use
        [ERROR Port-2379]: Port 2379 is in use
        [ERROR Port-2380]: Port 2380 is in use
        [ERROR DirAvailable--var-lib-etcd]: /var/lib/etcd is not empty
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`
To see the stack trace of this error execute with --v=5 or higher

如果遇到以上错误,运行一下命令,充值kubenetes cluster

kubeadm reset

再次运行init(还是出现错误)

root@k8smaster:~# kubeadm init --control-plane-endpoint=k8smaster.lab.com
I0406 15:42:41.829195    3206 version.go:256] remote version is much newer: v1.29.3; falling back to: stable-1.31
[init] Using Kubernetes version: v1.31.8
[preflight]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值