原文网址:Ubuntu安装K8S(1.28版本,基于containrd)-CSDN博客

简介

本文介绍Ubuntu安装K8S的方法。

官网文档:这里

1.安装K8S

1.让apt支持SSL传输

sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates

2.下载 gpg 密钥

curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add - 

3.添加 k8s 镜像源

创建/etc/apt/sources.list.d/kubernetes.list文件,并添加阿里的K8S源。

sudo touch /etc/apt/sources.list.d/kubernetes.list
sudo vi /etc/apt/sources.list.d/kubernetes.list

添加的内容如下:

deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main

4.安装k8s

更新软件源

sudo apt-get update

查看版本

sudo apt-cache madison kubeadm
sudo apt-cache madison kubelet
sudo apt-cache madison kubectl

三个软件的版本都是下边这样(我为了只看前几行,加了个| head -20,否则会输出很多) 

安装指定版本(本处我安装最新版本(1.28.2-00))

sudo apt-get install -y kubelet=1.28.2-00 kubeadm=1.28.2-00 kubectl=1.28.2-00

kubeadm用于初始化环境,kubectl用于操作kubelet。 

5.启动k8s

启动k8s

sudo systemctl start kubelet

设置开机启动

sudo systemctl enable kubelet

6.命令自动补全

 这几个命令没有自动补全,用起来不方便。启用自动补全的方法见:这里

2.配置K8S环境

执行命令时有时候会报下边错误,不用管它。报错原因:去k8s官网查看发布版列表,但是国内访问不了这个网站,连不上;此时会自动使用本地客户端的版本,本处是:1.28.2。

1.禁用防火墙和swap

这两步必须操作!不然k8s无法正常运行。

1.禁用防火墙

sudo sysemctl stop ufw
sudo systemctl disable ufw

2.禁用swap

修改/etc/fstab文件,将swap所在的行注释掉

2.预检

执行安装之前,会做一系列的系统预检查,以确保主机环境符合安装要求,如果检查失败,就直接终止,不进行init操作。因此可以通过命令执行预检查操作,确保系统就绪后再进行init操作。会检查内存大小等。

sudo kubeadm init phase preflight

到这一步一般会报错:

原因是:默认关闭了cri(容器运行时),需要启用它。 本处先不处理,下边第4步安装容器运行时之后,这个就解决了。

3.网络设置

转发 IPv4 并让 iptables 看到桥接流量。 官网:这里

执行如下指令:

1.向k8s.conf写入两行配置并启用它

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF

sudo modprobe overlay
sudo modprobe br_netfilter

2.设置所需的 sysctl 参数,参数在重新启动后保持不变

下边命令会向k8s.conf写入三行内容

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

3.应用 sysctl 参数而不重新启动

sudo sysctl --system

4.安装容器运行时

官网:这里

需要在集群内每个节点上安装一个容器运行器以使 Pod 可以运行在上面。容器运行器实现了CRI(容器运行时接口),常见的容器运行器有:

  1. containerd
  2. CRI-O
  3. Docker(使用 cri-dockerd 适配器来将 Docker 与 Kubernetes 集成)
  4. Mirantis Container Runtime

我是用containerd,这是现在最常用的。做完上边第一步(1.安装K8S)后,默认会安装contrainerd,可以用此命令查看:

ctr -v

结果

1.生成配置并修改

先切换到root用户,然后执行如下命令:

containerd config default > /etc/containerd/config.toml

会生成配置文件:/etc/containerd/config.toml,修改如下配置项 :

修改1:修改cgroup为systemd

原内容

SystemdCgroup = false

修改为

SystemdCgroup = true

kubelet 的 cgroup 驱动 默认是systemd,这里需要保持一致。详见:官网

修改2:沙箱使用阿里云的源

原内容

sandbox_image = "registry.k8s.io/pause:3.6"

修改为

sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.6"

修改3:使用国内的镜像源

在plugins."io.containerd.grpc.v1.cri".registry.mirrors下边添加如下内容:

内容为:

      [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
        endpoint = ["https://ustc-edu-cn.mirror.aliyuncs.com", "https://hub-mirror.c.163.com"]
      
      [plugins."io.containerd.grpc.v1.cri".registry.mirrors."k8s.gcr.io"]
        endpoint = ["registry.aliyuncs.com/google_containers"]

2.重启containerd

修改完毕后,重启containerd

sudo systemctl daemon-reload
sudo systemctl restart containerd

让containerd开机自启

sudo systemctl enable containerd

5.搭建K8S集群

上边是文章的部分内容,为便于维护,全文已转移到此网址:Ubuntu安装K8S(1.28版本,基于containrd) - 自学精灵

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐