Centos7安装k8s(基于kubeadm) 电脑版发表于:2021/7/21 10:01  >#Centos7安装k8s(基于kubeadm) [TOC] 下载相关包 ------------ >链接:https://pan.baidu.com/s/1H9MuZsf28f_3uyVHBUS8jQ 提取码:w9tv Master与Work节点共同步骤 ------------ >先看看ip,然后确定Master与Work节点相通的ip是哪个 ```bash ifconfig ``` >修改`hosts` ```bash hostnamectl set-hostname k8s-1 systemctl restart network # 把master与work节点都添加到hosts中 echo "172.16.1.65 k8s-1" >> /etc/hosts echo "172.16.1.66 k8s-2" >> /etc/hosts ping k8s-1 -c 3 # 没翻墙 cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF # 翻墙了的 cat <<EOF > /etc/yum.repos.d/google-kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 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 EOF # 关防火墙 systemctl stop firewalld systemctl disable firewalld # 设置selinux的参数 sed -ie 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config setenforce 0 # 设置系统具体参数 echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf echo "net.bridge.bridge-nf-call-ip6tables = 1" >>/etc/sysctl.conf echo "net.bridge.bridge-nf-call-iptables = 1" >>/etc/sysctl.conf echo "net.bridge.bridge-nf-call-arptables = 1" >>/etc/sysctl.conf swapoff -a sysctl -p # 更新 yum update -y # 安装docker-ce yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum -y install docker-ce mkdir -p /etc/docker/ cat <<EOF > /etc/docker/daemon.json { "registry-mirrors": ["https://cu2yw19m.mirror.aliyuncs.com"] } EOF # 重启 systemctl daemon-reload systemctl restart docker systemctl enable docker # 安装 kubeadm kubectl kubelet yum -y install kubeadm-1.20.0 kubectl-1.20.0 kubelet-1.20.0 systemctl restart network systemctl enable kubelet && systemctl restart kubelet cat /proc/sys/net/bridge/bridge-nf-call-iptables cat /proc/sys/net/bridge/bridge-nf-call-ip6tables # 关闭swap echo "KUBELET_EXTRA_ARGS="--fail-swap-on=false"" > /etc/sysconfig/kubelet systemctl restart kubelet # 到我们解压后的目录下 cd /root/1.20.0/ docker load -i kube-controller-manager.tar docker load -i kube-apiserver.tar docker load -i kube-proxy.tar docker load -i kube-scheduler.tar docker load -i coredns.tar docker load -i etcd.tar docker load -i flannel.tar docker load -i pause.tar docker load -i nettoolbox.tar ``` 接着Master执行 ------------ ```bash # 初始化后,保存join因为需要Work端执行 kubeadm init --kubernetes-version=v1.20.0 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/16 --ignore-preflight-errors=Swap mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config kubectl taint nodes --all node-role.kubernetes.io/master- # 安装flannel kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml kubectl get nodes -o wide kubectl get pods -o wide -n=kube-system kubectl run nettoolbox --image=burlyluo/nettoolbox --restart=Never kubectl get pods -o wide ``` 接着Work节点执行 ------------ ```bash # 执行复制的join ``` 其他 ------------ >### CentOS 7 内核升级 ```bash uname -r rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm yum --enablerepo=elrepo-kernel install kernel-ml-devel kernel-ml -y grub2-set-default 0 reboot uname -r ``` >### 问题 tn2>遇到该问题:`[Errno -1] repomd.xml signature could not be verified for kubernetes Trying other mirror` 解决方法: ```bash #去掉kubernetes.repo文件中的下列两项 gpgcheck=1 repo_gpgcheck=1 ``` tn2>遇到`Errors during downloading metadata for repository 'base':` ```bash # 进入yum目录 cd /etc/yum.repos.d # 删除目录下所有文件(注意完整复制,不要漏了那个点) rm -rf ./* # 安装正确的源 wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo # 生成缓存 yum makecache ``` tn2>`Problem: package containers-common-2:1-2.module_el8.5.0 890 6b136101.noarch requires runc, but none of the providers can be installed` ```bash dnf -y module disable container-tools ``` tn2>`Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist` ```bash cd /etc/yum.repos.d vi CentOS-Linux-BaseOS.repo vi CentOS-Linux-AppStream.repo ``` ```bash [baseos] name=CentOS Linux $releasever - BaseOS #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=BaseOS&infra=$infra #baseurl=http://mirror.centos.org/$contentdir/$releasever/BaseOS/$basearch/os/ baseurl=https://vault.centos.org/centos/$releasever/BaseOS/$basearch/os/ gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial ``` ```bash [appstream] name=CentOS Linux $releasever - AppStream #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=AppStream&infra=$infra #baseurl=http://mirror.centos.org/$contentdir/$releasever/AppStream/$basearch/os/ baseurl=https://vault.centos.org/centos/$releasever/AppStream/$basearch/os/ gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial ``` tn2>`RPM: error: db5 error(-30969) from dbenv->open: BDB0091 DB_VERSION_MISMATCH: Database environment version mismatch` ```bash cd /var/lib/rpm ls -a rm -rf __db.* rpm --rebuilddb dnf update ```