安装kubernetes v1.21.1

安装kubernetes v1.21.1

一、环境准备

(一)、系统环境

CentOS 7.9, 最小化安装,三台

(二)、IP地址、域名规划

序号IP主机名
1172.16.1.236k8s-example-node01
2172.16.1.237k8s-example-node02
3172.16.1.238k8s-example-node03

写入hosts文件:

cat >/etc/hosts <<EOF

172.16.1.236 k8s-example-node01
172.16.1.237 k8s-example-node02
172.16.1.238 k8s-example-node03
EOF

设置主机名(下次登陆时生效)

# hostnamectl set-hostname k8s-example-node01
# hostnamectl set-hostname k8s-example-node02
# hostnamectl set-hostname k8s-example-node03

(三)、关闭selinux

# setenforce 0
# sed -i 's/^SELINUX=\w*$/SELINUX=disabled/g' /etc/selinux/config

(四)、关闭Firewalld

# systemctl stop firewalld && systemctl disable firewalld

(五)、关闭swap分区

# swapoff -a

为避免主机重启后再次挂载swap分区,可在/etc/fstab文件中将挂载分区的行注释掉。

(六)、配置内核模块和系统参数

lsmod | grep br_netfilter || modprobe br_netfilter

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

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

sysctl --system

二、安装Docker

(一)、卸载旧版本Docker(如果安装过)

# yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

(二)、配置Docker官方yum仓库

# yum install -y yum-utils
# yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

(三)、安装Docker

# yum -y install docker-ce docker-ce-cli containerd.io

默认安装最新版本,也可以通过指定版本号来安装指定版本。

(四)、修改Docker默认使用的cgroup驱动

# cat > /etc/docker/daemon.json <<EOF
{
  "exec-opts": ["native.cgroupdriver=systemd"]
}
EOF

(五)、启动Docker

# systemctl daemon-reload
# systemctl restart docker
# systemctl enable docker
# docker info | grep -i cgroup

三、安装kubernetes组件

# cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
exclude=kubelet kubeadm kubectl
EOF

# yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
# systemctl enable --now kubelet

四、初始化集群

以上所有的操作都要在三台主机执行,之后的命令不同主机之间会有所区别。

(一)、初始化集群

控制节点操作:

# kubeadm init

常见参数:

--kubernetes-version v1.21.1 # 指定要安装的版本
--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers # 默认的镜像仓库为k8s.gcr.io,一般都无法正常访问,可以尝试用阿里云提供的仓库代替
--pod-network-cidr 10.244.0.0/16 # 指定集群要使用的IP地址段

在控制节点执行完初始化操作之后,根据提示,到work节点执行提示的kubeadm join ...

(二)、安装网络插件

# curl https://docs.projectcalico.org/manifests/calico.yaml -O
# kubectl apply -f calico.yaml

五、常见问题处理

(一)、通过yum安装kubeadm,kubelet,kubectl失败

可在能访问谷歌k8s yum仓库的主机通过yumdownloader --resolve kubelet kubeadm kubectl命令,将kubelet kubeadm kubectl的rpm包及其依赖包一起下载下来,拷贝到本地之后,直接使用rpm ivh *或者yum -y localinstall命令来安装。

(二)、kubeadm初始化失败

根据执行kubeadm初始化时的提示,如果是检查项没通过,可修复相关检查项。

在初始化之前,可先通过kubeadm config images list查看需要的docker镜像,在初始化之前先进行下载或导入离线镜像文件。

如果是因为无法下载docker镜像,可尝试用过来docker镜像仓库地址替换默认的谷歌镜像仓库,在执行kubeadm init时,添加--image-repository参数,指定国内的镜像仓库地址,例如阿里云的registry.cn-hangzhou.aliyuncs.com/google_containers

通过安装v1.21.1版本发现,阿里云镜像仓库没有coredns:v1.8.0,可按照下载rpm包的思路,先将coredns:v1.8.0下载到能访问谷歌镜像仓库k8s.gcr.io的主机,再通过docker image save命令导出,拷贝到本地主机之后,再使用docker image load命令提前将镜像导入。

六、资源下载

经过本次安装,整理了一下安装时容易出现无法下载的资源,上传到了百度网盘,有需要的可自取(仅限kubernetes v1.21.1版本)。

链接: https://pan.baidu.com/s/1BQXN03N3g3DFG5DmaXh1CA 提取码: eii8

文件列表如下:

tree -f k8s_v1.21.1/
k8s_v1.21.1
├── k8s_v1.21.1/images
│   ├── k8s_v1.21.1/images/cni_v3.19.1.tgz
│   ├── k8s_v1.21.1/images/coredns_v1.8.0.tgz
│   ├── k8s_v1.21.1/images/etcd_3.4.13-0.tgz
│   ├── k8s_v1.21.1/images/kube-apiserver_v1.21.1.tgz
│   ├── k8s_v1.21.1/images/kube-controller-manager_v1.21.1.tgz
│   ├── k8s_v1.21.1/images/kube-proxy-amd64_v1.21.1.tgz
│   ├── k8s_v1.21.1/images/kube-proxy_v1.21.1.tgz
│   ├── k8s_v1.21.1/images/kube-scheduler_v1.21.1.tgz
│   ├── k8s_v1.21.1/images/node_v3.19.1.tgz
│   ├── k8s_v1.21.1/images/pause_3.4.1.tgz
│   └── k8s_v1.21.1/images/pod2daemon-flexvol_v3.19.1.tgz
└── k8s_v1.21.1/rpms
    ├── k8s_v1.21.1/rpms/docker
    │   ├── k8s_v1.21.1/rpms/docker/audit-libs-python-2.8.5-4.el7.x86_64.rpm
    │   ├── k8s_v1.21.1/rpms/docker/checkpolicy-2.5-8.el7.x86_64.rpm
    │   ├── k8s_v1.21.1/rpms/docker/containerd.io-1.4.4-3.1.el7.x86_64.rpm
    │   ├── k8s_v1.21.1/rpms/docker/container-selinux-2.119.2-1.911c772.el7_8.noarch.rpm
    │   ├── k8s_v1.21.1/rpms/docker/docker-ce-20.10.6-3.el7.x86_64.rpm
    │   ├── k8s_v1.21.1/rpms/docker/docker-ce-cli-20.10.6-3.el7.x86_64.rpm
    │   ├── k8s_v1.21.1/rpms/docker/docker-ce-rootless-extras-20.10.6-3.el7.x86_64.rpm
    │   ├── k8s_v1.21.1/rpms/docker/docker-scan-plugin-0.7.0-3.el7.x86_64.rpm
    │   ├── k8s_v1.21.1/rpms/docker/fuse3-libs-3.6.1-4.el7.x86_64.rpm
    │   ├── k8s_v1.21.1/rpms/docker/fuse-overlayfs-0.7.2-6.el7_8.x86_64.rpm
    │   ├── k8s_v1.21.1/rpms/docker/libcgroup-0.41-21.el7.x86_64.rpm
    │   ├── k8s_v1.21.1/rpms/docker/libseccomp-2.3.1-4.el7.x86_64.rpm
    │   ├── k8s_v1.21.1/rpms/docker/libsemanage-python-2.5-14.el7.x86_64.rpm
    │   ├── k8s_v1.21.1/rpms/docker/policycoreutils-python-2.5-34.el7.x86_64.rpm
    │   ├── k8s_v1.21.1/rpms/docker/python-IPy-0.75-6.el7.noarch.rpm
    │   ├── k8s_v1.21.1/rpms/docker/setools-libs-3.3.8-4.el7.x86_64.rpm
    │   └── k8s_v1.21.1/rpms/docker/slirp4netns-0.4.3-4.el7_8.x86_64.rpm
    └── k8s_v1.21.1/rpms/k8s
        ├── k8s_v1.21.1/rpms/k8s/conntrack-tools-1.4.4-7.el7.x86_64.rpm
        ├── k8s_v1.21.1/rpms/k8s/cri-tools-1.13.0-0.x86_64.rpm
        ├── k8s_v1.21.1/rpms/k8s/kubeadm-1.21.1-0.x86_64.rpm
        ├── k8s_v1.21.1/rpms/k8s/kubectl-1.21.1-0.x86_64.rpm
        ├── k8s_v1.21.1/rpms/k8s/kubelet-1.21.1-0.x86_64.rpm
        ├── k8s_v1.21.1/rpms/k8s/kubernetes-cni-0.8.7-0.x86_64.rpm
        ├── k8s_v1.21.1/rpms/k8s/libnetfilter_cthelper-1.0.0-11.el7.x86_64.rpm
        ├── k8s_v1.21.1/rpms/k8s/libnetfilter_cttimeout-1.0.0-7.el7.x86_64.rpm
        ├── k8s_v1.21.1/rpms/k8s/libnetfilter_queue-1.0.2-2.el7_2.x86_64.rpm
        └── k8s_v1.21.1/rpms/k8s/socat-1.7.3.2-2.el7.x86_64.rpm

如果在安装时还有其他问题,欢迎留言讨论

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值