centos7安装部署Kubernetes集群

本文详细介绍了如何在CentOS7环境下搭建Kubernetes集群,包括环境准备、配置yum仓库、开启iptables桥接功能、设置路由转发、安装kubernetes组件、下载及修改镜像、初始化与加入节点,以及解决NotReady状态问题。最后,文章提供了重置和重新初始化集群的注意事项。

1、环境准备

  1. 准备3台centos7主机(每台至少双核2G)
  2. 关闭防火墙,禁用selinux,同步时间
  3. 修改好主机名,并配置hosts(例:master,node01,node02)
  4. 配置ssh免密登录(搜索或者参考https://blog.youkuaiyun.com/u010342213/article/details/100921274
  5. 安装docker环境(可以参考菜鸟教程https://www.runoob.com/docker/centos-docker-install.html
  6. 永久禁用swap
swapoff -a  #临时生效,重启失效

修改开机加载配置文件,把swap开机加载配置项注释掉。

vim /etc/fstab  #永久禁用

在这里插入图片描述
然后

mount -a  # 重新加载生效

注意】:以上操作三台主机都要执行


2、安装kubernetes

2.1、编写repo文件配置yum仓库(3个节点都要配置)

cd /etc/yum.repos.d  # 进入指定目录
vim kubernetes.repo  # 新建kubernetes.repo文件,编辑如下内容

[kubernetes]
name=kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0

在这里插入图片描述

yum repolist  #查看

在这里插入图片描述

yum makecache   #在本地生成缓存

在这里插入图片描述
【注意】:以上操作三台主机都要执行

2.2、打开iptables桥接功能(3个节点都要配置)

vim /etc/sysctl.d/k8s.conf    #在该目录下自定义conf文件,添加以下配置项

net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1

重新加载文件使其生效

sysctl -p /etc/sysctl.d/k8s.conf 

在这里插入图片描述
注意】:如果报“找不到文件”,我们需要加载一个模块:

modprobe br_netfilter 

2.3、打开路由转发(3个节点都要配置)

echo net.ipv4.ip_forward = 1 > /etc/sysctl.conf
sysctl -p   #加载该文件,使其生效

在这里插入图片描述

2.4、在master节点操作

1. 修改yum的配置文件,缓存下面要下载的rpm包
vim /etc/yum.conf 

在这里插入图片描述

2. 下载rpm包
yum -y install kubelet-1.15.0-0 kubeadm-1.15.0-0 kubectl-1.15.0-0

下载完成后查看是否缓存了rpm包

cd /var/cache/yum/x86_64/7/kubernetes/packages
ls

在这里插入图片描述

3. 将服务加入开机自启
systemctl enable kubelet.service
4. 下载镜像
docker pull mirrorgooglecontainers/kube-proxy:v1.15.0
docker pull mirrorgooglecontainers/kube-apiserver:v1.15.0
docker pull mirrorgooglecontainers/kube-scheduler:v1.15.0
docker pull mirrorgooglecontainers/kube-controller-manager:v1.15.0
docker pull quay.io/coreos/flannel:v0.11.0-amd64
docker pull coredns/coredns:1.3.1
docker pull mirrorgooglecontainers/etcd:3.3.10
docker pull mirrorgooglecontainers/pause:3.1

下载完成后,通过docker images查看镜像,
根据 IMAGE ID修改mirrorgooglecontainers开头的镜像名称,
docker tag IMAGE_ID NEW_REPOSITORY修改名称(可以保留旧的),

#例如:
docker tag d235b23c3570 k8s.gcr.io/kube-proxy:v1.15.0  

修改后如下:

在这里插入图片描述
一定要完成改名,否则接下来初始化会失败。

5.初始化集群
#初始化集群
kubeadm init --kubernetes-version=v1.15.0 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --ignore-preflight-errors=Swap

参数解释:
–kubernetes-version:指定当前kubernetes版本号(查看版本:kubelet --version)
–pod-network: 指定pod网段,kubernetes默认指定网络。
–ignore:忽略所有报错

参考如下截图,保存最下面的命令,后面添加节点要用。
在这里插入图片描述

根据上图的提示创建目录并授予权限:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

查看节点:

kubectl get nodes

在这里插入图片描述
可以看出master的状态是未就绪(NotReady),之所以是这种状态是因为还缺少一个附件flannel,没有网络各Pod是无法通信的。

6.部署docker容器的跨主机网络:

将该yml文件下载到本地

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

在这里插入图片描述
在yml文件所在目录执行:

kubectl apply -f kube-flannel.yml 

在这里插入图片描述
稍等一会会,查看节点状态:

kubectl get nodes

在这里插入图片描述

2.5 在两个从节点操作(node01和node02分别进行)

1.yum下载安装kubeadm(无需安装kubectl)
yum -y install kubelet-1.15.0-0 kubeadm-1.15.0-0
2.下载完成后将该服务加入开机自启
systemctl enable kubelet.service
3.docker拉取镜像

与master操作一样,先通过脚本拉取镜像,然后通过docker tag修改镜像名称

docker pull mirrorgooglecontainers/pause:3.1
docker pull mirrorgooglecontainers/kube-proxy:v1.15.0
docker pull quay.io/coreos/flannel:v0.11.0-amd64

下载完成后,通过docker images查看镜像,
根据 IMAGE ID修改mirrorgooglecontainers开头的镜像名称,
docker tag IMAGE_ID NEW_REPOSITORY修改名称,

#例如:
docker tag d235b23c3570 k8s.gcr.io/kube-proxy:v1.15.0  

修改名称后(可以保留旧的)如下图:
在这里插入图片描述

4.将node01和node02节点加入集群

在两个从节点分别执行以下命令加入集群(在初始化集群是生成的,并且每次的值都是不同的)

kubeadm join 192.168.xxx.xxx:6443 --token wgms7n.fba5wzd4lbtzdjxg \
    --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxx9f03f0eabda21a31xxxxe94db3a55596xxxxxxxxxxxxxxxxxxxxx

2.6、在master节点查看节点信息

kubectl get nodes

在这里插入图片描述
确保有其他节点的信息,并且状态都为ready。
注意:如果状态为NotReady,那就是网络的问题,没有部署跨主机网络,则需要执行上面【2.4 - 6】部署docker容器的跨主机的网络。


3、熄灯

至此k8s集群已经搭建完成。
补充】:
如果初始化集群(在master上初始化集群)后没有保存添加节点命令,或者是初始化成功后的信息信息被覆盖了想要重新初始化,可以先执行kubeadm reset命令重装一下,再重新初始化。
而当你执行完重置命令后,再进行初始化时,可能会报以下错误:
在这里插入图片描述
需要将该目录删除掉,

rm -rf /var/lib/etcd

如果已经创建了~/.kube目录,也需要一并删除,然后再重新初始化集群。

参考原文《安装部署Kubernetes集群实战》

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小技工丨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值