简易版k8s集群-搭建过程记录
准备工作
安装CentOS7虚拟机
略
安装Docker
略
关闭CentOS7自带的防火墙服务
systemctl disable firewalld
systemctl stop firewalld
修改主机名
vim /etc/hostname
- k8s-master01(对应主机ip:192.168.91.129)
- k8s-worker01(对应主机ip:192.168.91.130)
- k8s-worker02(对应主机ip:192.168.91.131)
配置ip地址
配置3台测试机的/etc/hosts文件(在三台服务器上同步)
vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.91.129 k8s-master01
192.168.91.130 k8s-worker01
192.168.91.131 k8s-worker02
获取源文件
(主从节点都需要)wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
(主从节点都需要)rpm --import rpm-package-key.gpg

(主节点)yum repolist
(主节点)新建和编辑repo文件:
vim /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
(主节点)
cd /etc/yum.repos.d
scp CentOS-Base.repo docker-ce.repo kubernetes.repo k8s-worker01:/etc/yum.repos.d/
scp CentOS-Base.repo docker-ce.repo kubernetes.repo k8s-worker02:/etc/yum.repos.d/
安装Kubernetes
修改/etc/docker/daemon.json
添加:"exec-opts": ["native.cgroupdriver=systemd"](用于消除安装k8s集群时的警告)
重启docker
systemctl daemon-reload
systemctl restart docker
主从节点安装Kubernetes组件镜像(指定为v1.17.6版本)
更新缓存(主从节点都需要)
yum clean all
yum -y makecache
(若是执行第二步的时候报错:Cannot find a valid baseurl for repo: base/7/x86_64,则检查一下网络问题)
验证源是否可用
yum list | grep kubeadm(如果提示要验证yum-key.gpg是否可用,输入y)

主从节点安装k8s-1.17.6:yum install -y kubelet-1.17.6-0 kubeadm-1.17.6-0 kubectl-1.17.6-0
配置、启动kubelet并设置开机启动(主从节点都需要)
查看相关配置:rpm -ql kubelet

其中,/etc/kubernetes/manifests 为清单目录,/etc/sysconfig/kubelet 为配置文件,/usr/lib/systemd/system/kubelet.service 为主程序。
增加配置信息:
vim /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
KUBELET_EXTRA_ARGS="--fail-swap-on=false"(直接关闭交换分区会导致虚拟机内存资源紧张,故直接配置忽略swap报错,这样在 kubeadm init 的时候,kubelet才能正常运行)
启动kubelet并设置开机启动(这里可以不执行启动命令,在主节点初始化时/从节点加入集群时会启动kubelet)
systemctl enable kubelet
导入k8s及相关docker镜像
集群初始化镜像
先手动将集群初始化镜像文件k8sv1.17.6.tar上传到各个节点的/root目录下
进入各个节点tar所在目录,使用如下命令导入镜像
docker load -i k8sv1.17.6.tar
集群初始化网络镜像
先手动将集群网络组件calico(calico3.13.2.tar,一套开源的网络和网络安全方案)上传到各个节点的/root目录下,集群所有节点都需要导入
导入calico.yml
k8s集群需要的网络插件为3.13版本,集群所有节点都需要导入
cd /root

若出现以下报错,则执行:yum install -y ca-certificates

初始化k8s集群
初始化master节点
kubeadm init --apiserver-advertise-address=192.168.91.129 --kubernetes-version v1.17.6 --service-cidr=10.1.0.0/16 --pod-network-cidr=10.81.0.0/16 --image-repository=registry.aliyuncs.com/google_containers --ignore-preflight-errors=Swap

若出现以下错误:

根据报错信息可知,是因为:/proc/sys/net/bridge/bridge-nf-call-iptables 和 /proc/sys/net/ipv4/ip_forward 的内容没有被设置为1
执行以下两条命令即可:
echo "1" >/proc/sys/net/bridge/bridge-nf-call-iptables
echo "1" >/proc/sys/net/ipv4/ip_forward
按照提示在master执行如下操作
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
worker节点加入集群
kubeadm join 192.168.91.129:6443 --token chijon.vjnq37z0titsxbmc --discovery-token-ca-cert-hash sha256:eca67b2c5ae245a6f203bc7de1030828e0f0d9fbdd5e9a640b83ab22a9d39609 --ignore-preflight-errors=Swap

若不加这段:--ignore-preflight-errors=Swap,则可能会出现如下报错:
[ERROR Swap]: running with swap on is not supported. Please disable swap
查看集群搭建结果
kubectl get nodes

由于还没有进行网络配置,故集群所有节点的状态为:NotReady
worker节点上面更是会直接报错:

运行 出现 The connection to the server localhost:8080 was refused - did you specify the right host or port? 的错误
- 出现这个问题的原因是kubectl命令需要使用kubernetes-admin来运行,解决方法如下,将主节点中的【/etc/kubernetes/admin.conf】文件拷贝到从节点相同目录下,然后配置环境变量
- echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
- source ~/.bash_profile
- 如果某个节点的/etc/kubernetes目录下没有admin.conf这个配置文件,则直接将主节点上的配置文件复制过去
网络安装(主从都需要)
cd /root
kubectl apply -f calico.yaml
kubectl命令自动补全
echo "source <(kubectl completion bash)" >> ~/.bash_profilesource ~/.bash_profile
再次查看集群搭建结果
kubectl get nodes
k8s-master01

可以看到集群所有节点的状态为:Ready
若某台虚拟机关机或断网了,则状态会变为 NotReady,重启或联网之后会自动加入集群,变为 Ready
作者:blayn
出处:https://www.cnblogs.com/blayn/
版权:本文版权归作者和博客园共有
转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任
出处:https://www.cnblogs.com/blayn/
版权:本文版权归作者和博客园共有
转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂