1、配置部署环境

cd /etc/yum.repos.d

#替换centos源,删掉原来的
wget https://mirrors.aliyun.com/repo/Centos-7.repo?spm=a2c6h.25603864.0.0.1d2f5969Itfuik
# 添加阿里云YUM软件源
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF 
#清理yum缓存
yum make clean
#刷新yum缓存
yum makecache

https://mirrors.aliyun.com/repo/Centos-7.repo?spm=a2c6h.25603864.0.0.1d2f5969Itfuik

若是在鲲鹏服务器arm架构上,则kubernetes.repo可以使用以下命令

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.huaweicloud.com/kubernetes/yum/repos/kubernetes-el7-aarch64/
enabled=1
gpgcheck=1
repo_gpgcheck=0
gpgkey=https://mirrors.huaweicloud.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.huaweicloud.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

2、安装配置k8s

2.1安装docker

(1)获取并解压源码

wget https://download.docker.com/linux/static/stable/x86_64/docker-19.03.14.tgz
tar -zxf docker-19.03.14.tgz

(2)将解压后目录中的文件移动到“/usr/bin”下

cp docker/* /usr

(3)配置docker.service文件

a.编辑docker.service文件

vim /usr/lib/systemd/system/docker.service

b.添加以下内容

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target

(4)启动docker服务进程

systemctl start docker

(5)查看安装情况

systemctl start docker

2.2安装基础组件

(1)启用NET.BRIDGE.BRIDGE-NF-CALL-IPTABLES内核

sysctl -w net.bridge.bridge-nf-call-iptables=1

(2)禁用交换分区

swapoff -a
cp -p /etc/fstab /etc/fstab.bak$(date '+%Y%m%d%H%M%S')
sed -i "s/\/dev\/mapper\/centos-swap/\#\/dev\/mapper\/centos-swap/g" /etc/fstab

(3)安装k8s组件

yum install -y kubelet-1.18.20 kubeadm-1.18.20 kubectl-1.18.20 kubernetes-cni

(4)查看安装情况

rpm -qa | grep kubelet
rpm -qa | grep kubeadm
rpm -qa | grep kubectl
rpm -qa | grep kubernetes-cni

(5)设置iptables

echo "net.bridge.bridge-nf-call-iptables=1" > /etc/sysctl.d/k8s.conf

2.3通过docker下载其他组件

(1)查看下载节点初始化所需镜像

kubeadm config images list

(2)从DockerHub上下载镜像

docker pull k8smx/kube-apiserver:v1.18.20
docker pull k8smx/kube-controller-manager:v1.18.20
docker pull k8smx/kube-scheduler:v1.18.20
docker pull k8smx/kube-proxy:v1.18.20
docker pull k8smx/pause:3.2
docker pull k8smx/coredns:1.6.7
docker pull k8smx/etcd:3.4.3-0

(3)修改已下载的镜像标签

docker tag k8smx/kube-proxy:v1.18.20 k8s.gcr.io/kube-proxy:v1.18.20
docker tag k8smx/kube-controller-manager:v1.18.20 k8s.gcr.io/kube-controller-manager:v1.18.20
docker tag k8smx/kube-apiserver:v1.18.20 k8s.gcr.io/kube-apiserver:v1.18.20
docker tag k8smx/kube-scheduler:v1.18.20 k8s.gcr.io/kube-scheduler:v1.18.20
docker tag k8smx/pause:3.2 k8s.gcr.io/pause:3.2
docker tag k8smx/coredns:1.6.7 k8s.gcr.io/coredns:1.6.7
docker tag k8smx/etcd:3.4.3-0 k8s.gcr.io/etcd:3.4.3-0

(4)查看k8s的docker镜像组件

docker images | grep k8s

(5)删除旧镜像

docker rmi k8smx/kube-proxy:v1.18.20
docker rmi k8smx/kube-controller-manager:v1.18.20
docker rmi k8smx/kube-apiserver:v1.18.20
docker rmi k8smx/kube-scheduler:v1.18.20
docker rmi k8smx/pause:3.2
docker rmi k8smx/coredns:1.6.7
docker rmi k8smx/etcd:3.4.3-0

3、部署k8s集群

3.1配置hosts文件

(1)查看ip和修改节点名称

ip a
hostnamectl set-hostname master
hostname
vi /etc/hosts

3.2配置管理节点

(1)在管理节点执行集群初始化命令

kubeadm init --pod-network-cidr=10.244.0.0/16

(2)配置集群

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

(3)在管理节点查看集群节点信息

kubectl get node

(4)保存管理节点生成的加入集群信息

该信息在成功初始化管理节点后生成并打印,集群信息如下所示:

kubeadm join 173.29.16.55:6443 --token fgol2e.vn1qldlzhogqz55s \
    --discovery-token-ca-cert-hash sha256:a0dfd416000b1e8ab963baba6e6dd9c1a9373423402e430126dc16451fdcfa1a

3.2配置计算节点

(1)删除代理

如果kubernetes工作节点已经配置了http和https代理,需要执行如下命令删除代理

export -n http_proxy
export -n https_proxy
export -n no_proxy

(2)计算节点加入集群

a.在计算节点中执行以下命令用以加入集群

kubeadm join 173.29.16.55:6443 --token fgol2e.vn1qldlzhogqz55s \
    --discovery-token-ca-cert-hash sha256:a0dfd416000b1e8ab963baba6e6dd9c1a9373423402e430126dc16451fdcfa1a

b.等待一分钟左右,在管理节点查看集群中加入的计算节点

kubectl get nodes

(3)在管理节点和计算节点上查看kubelet服务状态

systemctl status kubelet

4、添加Flannel网络插件(在master节点执行以下操作)

(1)下载flannel网络插件配置文件

wget  https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

(2)安装flannel插件

kubectl apply -f kube-flannel.yml

FAQ

问题1:配置内核参数报错:

sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-iptables: No such file or directory

解决:输入命令: modprobe br_netfilter后,继续执行

问题2:搭建k8s集群过程中,安装k8s组件时报错

解决:使用命令:

yum install -y kubelet-1.18.20 kubeadm-1.18.20 kubectl-1.18.20 kubernetes-cni --nobest

问题3:清空K8s集群时报错

解决:执行如下命令:

rm -rf /etc/kubernetes/*

rm -rf /root/.kube/

rm -rf /var/lib/etcd

问题4:若节点状态受到污点影响

解决:需执行 kubectl describe node nodename 查看节点详情

若有污点影响,需进行移除污点。可参考命令:

kubectl taint nodes kylinv10sp1.novalocal node-role.kubernetes.io/master:NoSchedule-

问题5:加入节点时报错如下图

解决:关闭防火墙重新加入

问题6:拉取镜像的速率限制。Docker Hub 对匿名用户有每个 IP 地址的拉取限制。因为拉取次数过多而被限制,因此拉取100个镜像,拉取成功57个,耗时108s

查看拉取失败的个别节点详情:

解决:本地构建镜像或使用不受限制的镜像

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐