centos7安装部署Kubernetes集群

1、环境准备

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

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

vim /etc/fstab  #永久禁用

centos7安装部署Kubernetes集群_第1张图片
然后

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

centos7安装部署Kubernetes集群_第2张图片

yum repolist  #查看

centos7安装部署Kubernetes集群_第3张图片

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 

centos7安装部署Kubernetes集群_第4张图片

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

centos7安装部署Kubernetes集群_第5张图片

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  

修改后如下:

centos7安装部署Kubernetes集群_第6张图片
一定要完成改名,否则接下来初始化会失败。

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:忽略所有报错

参考如下截图,保存最下面的命令,后面添加节点要用。
centos7安装部署Kubernetes集群_第7张图片

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

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

centos7安装部署Kubernetes集群_第8张图片
在yml文件所在目录执行:

kubectl apply -f kube-flannel.yml 

centos7安装部署Kubernetes集群_第9张图片
稍等一会会,查看节点状态:

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  

修改名称后(可以保留旧的)如下图:
centos7安装部署Kubernetes集群_第10张图片

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命令重装一下,再重新初始化。
而当你执行完重置命令后,再进行初始化时,可能会报以下错误:
centos7安装部署Kubernetes集群_第11张图片
需要将该目录删除掉,

rm -rf /var/lib/etcd

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

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

你可能感兴趣的:(k8s,docker,kubernetes,centos,linux)