一、准备三台节点

从上篇文章k8s入门之基础环境准备(一)安装的Ubuntu虚拟机克隆出三台虚拟机,如图所示
图片
启动这三台虚拟机节点,分别做如下配置

虚拟机名称IPHostName 
k8sMaster 192.168.59.110k8sMaster 
k8sWorker01 192.168.59.111k8sWorker01 
k8sWorker02 192.168.59.112k8sWorker02 

二、操作系统相关参数设置

注意:三台节点都要执行以下步骤

1.关闭selinux

ubuntu20.04默认没有安装selinux,不需要执行以下操作。如果是其他Linux操作系统请执行以下操作

sed -i '/^SELINUX=/c SELINUX=disabled' /etc/selinux/config
setenforce 0

2.永久关闭swap

swapoff -a

编辑 /etc/fstab 文件,注释以下内容
图片
如果你安装的是centos系统,请注释以下内容图片

通过free -m 命令查看swap交换分区已经关闭
图片

3.内核参数和模块设置

# 激活 br_netfilter 模块
modprobe br_netfilter
cat << EOF > /etc/modules-load.d/k8s.conf
br_netfilter
EOF
# 内核参数设置:开启IP转发,允许iptables对bridge的数据进行处理
cat << EOF > /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

三、安装k8s集群(版本:1.21.1)

1.配置apt源

注意:三台节点都要执行以下步骤

(1)编辑镜像源文件,加入阿里云k8s镜像源配置

vi /etc/apt/sources.list

#加入以下内容
deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial ma

(2)更新证书

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

(3)更新源

apt-get update

2.安装kubeadm、kubectl和kubelet

注意:三台节点都要执行以下步骤

本教程安装指定版本:1.21.1

apt-get install -y  kubeadm=1.21.1-00 kubectl=1.21.1-00 kubelet=1.21.1-00

如果你想安装最新版本,只需把后面的版本号信息去掉即可

apt-get install -y kubeadm kubectl kubelet

3.启动kubelet

注意:三台节点都要执行以下步骤

systemctl enable kubelet && systemctl start kubelet

4.查看安装k8s需要下载的镜像

在k8sMaster节点查看需要安装的k8s镜像

kubeadm config images list

一共有7个镜像文件

k8s.gcr.io/kube-apiserver:v1.21.11
k8s.gcr.io/kube-controller-manager:v1.21.11
k8s.gcr.io/kube-scheduler:v1.21.11
k8s.gcr.io/kube-proxy:v1.21.11
k8s.gcr.io/pause:3.4.1
k8s.gcr.io/etcd:3.4.13-0
k8s.gcr.io/coredns/coredns:v1.8.0

5.在master节点上通过kubeadm init安装k8s集群

参数说明:

–apiserver-advertise-address=192.168.59.110:指定k8s的master节点的IP地址

–image-repository:镜像仓库地址,如果你不能科学上网,请指定–image-repository为阿里云仓库

–pod-network-cidr=10.244.0.0/16:k8s的pod容器组的ip地址范围

–service-cidr=10.1.0.0/16:k8s的service服务的ip地址范围

–kubernetes-version=v1.21.1:k8s版本

在k8sMaster节点上执行以下命令

kubeadm init \
    --apiserver-advertise-address=192.168.59.110 \
    --image-repository registry.aliyuncs.com/google_containers \
    --pod-network-cidr=10.244.0.0/16 \
    --service-cidr=10.1.0.0/16 \
    --kubernetes-version=v1.21.1

安装过程中会报错,是因为阿里云仓库中不存在 coredns/coredns 镜像

[ERROR ImagePull]: failed to pull image registry.aliyuncs.com/google_containers/coredns/coredns:v1.8.0: output: 
Error response from daemon: pull access denied for registry.aliyuncs.com/google_containers/coredns/coredns, repository d
oes not exist or may require 'docker login': denied: requested access to the resource is denied

解决方法就是手动拉取该镜像(默认就是docker hub仓库)并设置新tag:

注意:三台节点都要执行以下步骤

docker pull coredns/coredns:1.8.0
docker tag coredns/coredns:1.8.0 registry.aliyuncs.com/google_containers/coredns/coredns:v1.8.0
docker rmi coredns/coredns:1.8.0

在master节点上重置kubeadm reset,然后重新执行kubeadm init命令,安装过程大概会持续5~20分钟不等,请耐心等待!

安装成功如下图所示,根据打印出来的提示信息,进行config文件配置,同时你需要保存图中后续worker节点加入集群的命令语句:kubeadm join …

图片

6.设置config文件

在master节点上执行以下命令

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

7.安装calico网络插件

因为缺少网络插件,此时master节点并没有准备就绪

图片

接下来需要安装网络插件,下载calico资源文件,在master节点上执行以下命令

wget  https://docs.projectcalico.org/v3.21/manifests/calico.yaml

执行安装命令,安装需要一点时间

kubectl apply -f calico.yaml

安装完成后再次查看,pod都处于运行状态,而且master节点也处于就绪状态

图片

接下来就是把worker节点加入到集群中

8.把worker节点加入集群

在所有worker节点上执行以下命令

kubeadm join 192.168.59.110:6443 --token pxfvw2.op3m2lmci4ym23xy \
        --discovery-token-ca-cert-hash sha256:ef57d20bf60d17c5311609684c6fea190e372bc3b36487e7c37e44b61b9e40ef

此token的有效期是24小时,可以通过以下命令重新获取

kubeadm token create --print-join-command

然后在master节点上通过命令查看k8s所有节点状态

kubectl get nodes

图片

可以看到所有节点都是Ready状态,至此k8s集群搭建成功!

四、关于k8s管理界面

安装官方的dashboard web管理界面很简单,本系列文章前期不会带大家去安装,目的是为了让大家多动手去敲那些k8s命令,这样可以加深映象,等大家用熟练了再去使用UI界面自然而然会很轻松,不至于一脸懵逼。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐