基于Kubeadm安装部署Kubernetes集群

踩坑不断,总结经验!!

1.虚拟机准备

准备两台虚拟机一台做master一台为node自己搭着玩的话对cpu和内存要求不高

2core和4G内存

两台虚拟机都需要安装docker
确保两台虚拟机能够通过网络同步时间,不然后面会出错。

yum install ntpdate
ntpdate cn.pool.ntp.org

修改主机名

vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=master

node将master改为node
是主机名生效
/bin/hostname 要修改的主机名

/bin/hostname master

可以执行hostname来查看是否成功
设置ip 使得两台虚拟机可以通过主机名通信

vi /etc/hosts
192.168.1.5 master
192.168.1.6 node
此处ip是你虚拟机ip可执行ipconfig或者ip addr来查看

在这里插入图片描述
关闭防火墙并关闭其开机自启动

systemctl stop firewalld
systemctl disable firewalld

关闭Swap

vi /etc/fstab

注释掉包含Swap的哪一行即可永久关闭Swap
关闭selinux
临时关闭

setenforce 0

永久关闭

vi /etc/sysconfig/selinux

将SELINUX的值改为disabled即可
执行完上述操作后必须reboot重启虚拟机使改动生效。至此虚拟机配置完成。

2.配置yum源安装Kubeadm

vim /etc/yum.repos.d/kubernetes.repo

在/etc/yum.repos.d/下创建并编辑kubernetes.repo

[kubernetes]
name=Kubernetes Repo
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
enable=1

编辑完成后:wq保存退出
然后对yum源进行更新

yum repolist

手动拉取yum-key.gpg和rpm-package-key.gpg
逐条执行下面四条命令

wget https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
rpm --import yum-key.gpg
wget https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
rpm --import rpm-package-key.gpg

完成后安装开始kubeadm

yum install kubeadm kubectl kubelet

选择都选y就可以了

3.初始化安装Master节点

安装完成后在初始化之前查看iptables与ip6tables是否为1

cat /proc/sys/net/bridge/bridge-nf-call-iptables
cat /proc/sys/net/bridge/bridge-nf-call-ip6tables

如果为0,如图所示
在这里插入图片描述
编辑/etc/sysctl.conf

vi /etc/sysctl.conf

加入

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-arptables = 0
EOF

然后reboot就可以了
修改docker的环境变量

vim /usr/lib/systemd/system/docker.service

加入

Environment="HTTPS_PROXY=http://www.ik8s.io:10080"
Environment="NO_PROXY=127.0.0.0/8,172.20.0.0/16"

保存退出
重启docker

systemctl daemon-reload
systemctl restart docker

然后进行初始化操作

kubeadm init --kubernetes-version=v1.15.2 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12

kubernetes-version根据自己安装的决定
如果遇到error swap
编辑vim /etc/sysconfig/kubele
加入KUBELET_EXTRA_ARGS="--fail-swap-on=false"使其忽略Swap
然后重新进行kubeadm init操作 在最后加上–ignore-preflight-errors=Swap

kubeadm init --kubernetes-version=v1.15.2 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --ignore-preflight-errors=Swap

如果遇到ERROR ImagePull错误
在这里插入图片描述
这是因为无法从国外网站之上拉取镜像,可以找一个国内的k8s组件的镜像文件,使用docker pull下载下来然后docker tag 对镜像的标签进行修改,改成上图中没有拉下来的镜像就可以继续初始化了。
也可以在网上下载在主机上通过xftp传给虚拟机,然后通过docker load >xxx.tar命令导入。
镜像下载完成后
继续初始化 初始化成功后
保存好
在这里插入图片描述
然后进行如下两条命令

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

systemctl enable kubelet设置kubelet开机自启动
然后运行

kubectl get nodes

此时master显示为Notready状态,因为没有配置网络插件flannel
下载网络插件flannel如果你的是k8s1.7以上直接运行这条命令自动安装部署

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

但是我遇到了flannel镜像同样无法拉取的问题
运行kubectl get pods --all-namespaces发现flannel处于ImagePullBackoff
在这里插入图片描述
这里同样需要在网上下载对应版本的tar包,通过xftp导入虚拟机后,再通过
docker load --input flannel.tar导入镜像,这里需要对镜像的标签做改动

docker tag 你导入的镜像名称:版本标签 quay.io/coreos/flannel:v0.11.0-amd64

我这里需要的是v0.11.0版本的flannel
改好之后等一小会,系统会自动识别,然后你就会发现master节点为ready状态了
在这里插入图片描述
下面要做的就是将node节点添加进来集群

4.安装Node加入集群

node同样需要安装docker和kubeadm,所以按上面的教程操作到kubeadm安装完成,这时不需要初始化也就是不需要kubeadm init但是同样需要哪些镜像文件所以需要给node节点导入基于Kubeadm安装部署Kubernetes集群_第1张图片
镜像文件导入后标签改好后就可以执行join操作了

kubeadm join 192.168.1.5:6443 --token 67lk3m.0x6stlylgrdslrtt --discovery-token-ca-cert-hash sha256:cc31fdd558126685517fea3f27a6253a7ecb198901698eb8f3c5b6edbc39103e --ignore-preflight-errors=Swap

这里就是你保存的哪一行join码了,如果失败则说明你的token失效
执行kubeadm token create --ttl 0生成一个不会失效的token
将生成的token替换掉上面的失效token

kubeadm join 192.168.1.5:6443 --(token 67lk3m.0x6stlylgrdslrtt)替换部分 --discovery-token-ca-cert-hash sha256:cc31fdd558126685517fea3f27a6253a7ecb198901698eb8f3c5b6edbc39103e --ignore-preflight-errors=Swap

再次运行后node节点加入成功
基于Kubeadm安装部署Kubernetes集群_第2张图片
K8S集群部署完成,如果有需要还可以继续添加node节点进来!!!!!!

你可能感兴趣的:(kubernetes集群部署)