centos7上用kubeadm搭建kubenetes集群(详细+踩坑记录)

本文详细记录了在CentOS7上使用kubeadm搭建Kubernetes集群的过程,包括环境准备、集群初始化、节点加入、网络插件配置等步骤,并分享了可能遇到的问题及解决方案,适用于学习测试环境。
摘要由CSDN通过智能技术生成

总体说明

  • kubernetes处在不断的更新迭代中,因此其环境配置应注重时效性
  • kubeadm是官方的辅助配置工具,简化了集群搭建过程
  • 我搭建的是1.17.3的版本,2020年2月
  • 搭建环境是centos7, 四核心16G内存三台机器
  • 一个master节点,一个etcd,两台node,简单学习测试环境,很难用于实际生产
  • 我用的ip 172.16.1.190 master .191 .192 node

安装前准备

机器要求

在这里插入图片描述

机器时间同步

各节点时间要求精确同步,可以直接联网的话,使用

systemctl start chronyd.service
systemctl enable chronyd.service

或者全部连接同一台时间服务器

节点的DNS解析(通过hosts文件进行)

为了方便区分先给没台机器设置主机名

hostnamectl set-hostname master/node01/node02....

在每台机器上向 /etc/hosts文件添加

cat <<EOF >>/etc/hosts 
172.16.1.190 master 
172.16.1.191 node01 
172.16.1.192 node02 
EOF
每台机器上关闭firewalld,禁用swap设备,关闭selinux
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
swapoff -a
sed -i 's /.* swap.*/#&/' /etc/fstab

查看swap是否被正确关闭

free -m
每台机器配置iptables
cat >/etc/sysctl.d/k8s.conf <<EOF 
net.bridge.bridge-nf-call-ip6tables =1 
net.bridge.bridge-nf-call-iptables =1 
EOF
sysctl --system
将yum源配置到国内

可以使用

yum install -y wget
mkdir /etc/yum.repos.d/bak && mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos7_base.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.cloud.tencent.com/repo/epel-7.repo
yum clean all && yum makecache
为每台机器搭建docker

docker是k8s的基础组件,但要注意kubernets和docker对应的版本问题,一般两者默认都安装最新版本基本都兼容。关于k8s对docker的版本问题可以在其github项目的版本md文档中查阅到。
docker的安装参考菜鸟教程
在这里插入图片描述
测试docker,启动docker服务,并开机自启动,查看启动是否成功

docker --version
systemctl start docker
systemctl enable docker
systemctl status docker

docker默认从dockerhub拉取镜像,如果嫌慢,可以为其配置国内加速源

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker- ce.repo

集群搭建

每台机器都安装kubeadm、kubelet、kubectl

这三个工具的国内镜像在阿里云上有,进去对应自己的机器版本选链接,配置仓库如下:

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

配置过后安装

yum install -y kubelet kubeadm kubectl

安装过程中,可能由于Google和阿里的同步问题,导致gpgcheck不通过,可以使用:

yum install -y kubelet kubeadm kubectl --nogpgcheck

设置kubelet开机自启动

systemctl enable kubelet

注意这里不用启动kubelet,因为master还没有初始化,日志会提示缺少yaml文件,kubelet无法启动

Master节点的初始化

使用下命令查看几个重要命令

kubeadm -h
  • kubeadm init (master节点初始化)
  • kubeadm join (node节点加入集群)
  • kubeadm reset (消除执行过后的init or join 的影响)
  • –dry-run (可以加在命令后面,代表不修改任何文件,只看结果)
    以kubedam安装的kubernetes,其核心组件,如apiserver,controller等也是以pod的形式在运行,所以,这一步骤中需要从google的站点k8s.grc.io拉取这些组件的镜像。而这个网站国内是不能正常访问的。国内能访问的源也有,如阿里云,dockerhub等。我们使用阿里云的源即可。
    初始化命令如下:
kubeadm init --kubernetes-version=1.17.3 \
--apiserver-advertise-address=172.16.1.190 \
--image-repository registry.aliyuncs.com/google_containers \
--pod-network-cidr=10.244.0.0/16 \
--service-cidr=10.1.0.0/16
  • apiserver地址即Master本机地址
  • pod-network-cidr即pod网络对应的网段,因为kubernetes自身没有设计pod网络,所以需要其余的网络插件,常用的是flannel,这个地址是flannel默认的

执行上述命令,正确的话,应该类似这种输出

W1221 17:44:19.880281    2865 version.go:101] could not fetch a Kubernetes version from the internet: unable to get URL "https://dl.k8s.io/release/stable-1.txt": Get https://dl.k8s.io/release/stable-1.txt: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
W1221 17:44:19.880405    2865 version.go:102] falling back to the local client version: v1.17.0
W1221 17:44:19.880539    2865 validation.go:28] Cannot validate kube-proxy config - no validator is available
W1221 17:44:19.880546    2865 validation.go:28] Cannot validate kubelet config - no validator is available
[init] Using Kubernetes ver
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值