使用kubeadm部署kubernetes集群

一、安装环境准备

1、安装环境: centos7.5,一个master节点,两个node节点

CentOS Linux release 7.5.1804 (Core)

2、设置/etc/hosts文件的IP和主机名映射

10.20.0.14 k8smaster
10.20.0.15 k8snode1
10.20.0.16 k8snode2

二、总体安装

以下安装步骤若未指明,则都为在master节点的安装

1、配置docker和k8s仓库(/etc/yum.repo.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
enabled=1

2、docker仓库可直接在/etc/yum.repo.d目录下通过

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo得到

3、执行yum install docker kubelet-1.11.1 kubeadm-1.11.1 kubectl-1.11.1

注1:k8s这三个相关应用后面加入了-1.11.1,指明了安装版本,若需要安装最新版,则不需要加-1.11.1,但k8s版本更新较快,最新版可能不稳定且出问题后网上资料较少排查困难,因此不建议安装最新版

注2:若安装提示gpg key无法安装,则需要手动wget https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg和wget https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

然后手动导入两个密钥文件rpm --import yum-key.gpg  rpm --import rpm-package-key.gpg

三、docker相关安装

4、为了使docker能正常访问bridge-nf-call-iptables ,需要把如下两个文件内容修改为1

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

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

若这两个文件原来的值都为0,则参考如下教程修改https://blog.csdn.net/xypds2010/article/details/52212323,否则继续

5、启动docker并设置docker自启动

systemctl start docker
systemctl enable docker

四、kubelet相关安装

6、设置kubelet

1)rpm -ql kubelet 查看kubelet安装了哪些文件

/etc/kubernetes/manifests
/etc/sysconfig/kubelet
/etc/systemd/system/kubelet.service
/usr/bin/kubelet

2)查看配置文件:cat /etc/sysconfig/kubelet

KUBELET_EXTRA_ARGS=

默认参数为空,可以先不用理会,后续有需要再修改

3)设置kubelet开机自启动:

systemctl enable kubelet

五、使用kubeadm完成集群初始化

7、在master节点初始化集群

1)kubeadm init --help查看init相关命令帮助

2)vim /etc/sysconfig/kubelet修改配置选项,忽略swap

3)KUBELET_EXTRA_ARGS="--fail-swap-on=false"

4)初始化

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

5)如拉取镜像失败,则按如下方式处理

images=(kube-proxy-amd64:v1.11.1 kube-scheduler-amd64:v1.11.1 kube-controller-manager-amd64:v1.11.1 kube-apiserver-amd64:v1.11.1etcd-amd64:3.2.18 pause-amd64:3.1)
for imageName in ${images[@]} ; do
  docker pull mirrorgooglecontainers/$imageName  
  docker tag mirrorgooglecontainers/$imageName k8s.gcr.io/$imageName  
  docker rmi mirrorgooglecontainers/$imageName
done

该命令为从mirrorgooglecontainers仓库拉取images里指定的镜像,并重命名tag,然后删除原来的镜像

由于镜像仓库国内无法访问,因此一般都拉取失败,此时就需要在本地先pull镜像,然后用docker tag命令更改镜像标签

初始化完成之后提示成功

 

6)同时可以看到一条加入当前集群的命令,该命令暂时不要执行,后续在node节点部署完之后再在node节点上安装

7)使用kubectl get cs(cs为componentstatus简写)

 

8)使用kubectl get nodes查看集群节点,看到master节点处于NotReady状态,这是因为集群网络组建flannel并未安装

 

9)到GitHub上搜索coreos/flannel仓库,readme文件里可以看到如下安装命令

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

执行该命令会自动拉去kube-proxy和kube-flannel镜像,稍等片刻重新查看节点状态即为Ready状态

 

10)同时使用kubectl get pods -n kube-system查看组建状态,-n后的参数指定了命名空间,status为running代表无误

 

六、在各node节点安装docker和kubelet、kubeadm、kubectl工具

8、至此,master节点部署已经完成,接下需要做的就是在各node节点安装dockers和kubelet、kubeadm、kubectl,然后执行kubeadm join那条命令将节点加入集群

9、分别在node1和node2节点上重复上文一到三的安装步骤(相关配置文件可以直接用scp拷贝到两个节点)

10、然后同样用vim /etc/sysconfig/kubelet命令修改kubelet配置,修改内容为

KUBELET_EXTRA_ARGS="--fail-swap-on=false"

11、执行加入集群的命令,需要添加--ignore-preflight-errors=Swap参数

kubeadm join 10.20.0.14:6443 --token 6dn3ug.44dcfvlnyt5orq63 --discovery-token-ca-cert-hash sha256:35717f83b75e9c3d580e46e1037d8bcbd43ec733c197d963eaf2f8a9f98a79ba  --ignore-preflight-errors=Swap

12、tomg同样由于镜像被墙的,此处加入集群会失败,使用kubectl get pods -n kube-system -o wide命令会看到有两个pod一直在init和creating

13、此时使用kubectl describe pod kube-flannel-ds-amd64-ddtnx -n kube-system查看错误信息,可以看到还是因为镜像拉取失败的问题,因此将flannel、proxy和pause三个镜像使用docker save和docker load命令从master拷贝到node1和node2上,这样kubeadm就会从本地直接使用这些镜像,避免了拉取失败的问题

 

14、当两个节点都加入集群后,使用kubectl get node命令查看集群节点是否就绪

 

使用kubectl get pods -n kube-system -o wide查看pod状态

 

当所有节点都为ready状态且pod可以running起来就代表集群可以正常运转了

七、总结

       使用kubeadm工具可以大大简化k8s部署流程,避免初学者因部署问题而望而却步,主要的坑就是kubeadm指定的仓库无法访问,因此先在本地拉取然后再创建pod资源,就可以避免拉取镜像失败的问题

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值