189 8069 5689

怎么安装Kubernets集群?

怎么安装Kubernets集群?针对这个问题,今天小编总结这篇有关安装Kubernets集群的文章,希望帮助更多想解决这个问题的同学找到更加简单易行的办法。

成都创新互联公司的客户来自各行各业,为了共同目标,我们在工作上密切配合,从创业型小企业到企事业单位,感谢他们对我们的要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。专业领域包括成都做网站、成都网站设计、电商网站开发、微信营销、系统平台开发。


  • 系统初始化

首先是三个centos的服务器。然后开始安装组件,这里为了方便三个机器上装的软件,拉的镜像都一样了,实际上可以少安装的一点,不过反正也节约不了多少空间,因为这些软件和镜像不是很大。

先是关防火墙和selinux之类的操作确保这些设置不会影响到操作。

sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
systemctl stop firewalld
systemctl disable firewalld

swapoff -a
setenforce 0

还有记得把/etc/fstab里的有swap字符的一行给注释掉,否则重启后kubelet的服务会出错。参考命令

sed -i 's/.*swap.*/#&/' /etc/fstab

  • 安装docker

接下来就是开始下软件和拉镜像的活了。它们同时存在的问题就是官方源不能下(因为它是某外国知名搜索引擎的服务器)。所以要加一下镜像源。

yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum list docker-ce --showduplicates | sort -r
yum -y install docker-ce

systemctl start docker
systemctl status docker
systemctl enable docker


  • 安装kubernets

安装 kubelet、kubeadm、kubectl,注意一下版本,yum源下载的版本默认是最新的,那么容器镜像至少要比这个版本新,如果没有,请在下载的时候注明版本信息。我在做本次测试环境的时候所有的软件和镜像都是1.16.0的版本。

加阿里云的镜像源。

cat>>/etc/yum.repos.d/kubrenetes.repo<
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet && systemctl start kubelet

加上版本的下载方法。

yum install -y kubelet-1.16.0 kubeadm-1.16.0 kubectl-1.16.0

如果你已经下错了,可以用一些命令来解决。

rpm -qa | grep kube 查看版本

yum downgrade //这个是yum降级的命令

先输入命令

kubeadm config images list

它会告诉你,你需要下载哪些镜像,你心里得有个底,至少这些镜像你要先下载完成才能完成继续。

当我在做的时候,屏幕上显示的是

k8s.gcr.io/kube-apiserver:v1.16.7

k8s.gcr.io/kube-controller-manager:v1.16.7

k8s.gcr.io/kube-scheduler:v1.16.7

k8s.gcr.io/kube-proxy:v1.16.7

k8s.gcr.io/pause:3.1

k8s.gcr.io/etcd:3.3.15-0

k8s.gcr.io/coreDNS:1.6.2

如果你输入了命令,后面的版本可能会有变化,但是前面基本是是一致的。

然后开始用kubeadmin init的方法去初始化集群。不过直接运行网上常见的命令估计90%是失败的。我在踩坑的时候找到两个办法,可以试试。

一个是:

kubeadm init --kubernetes-version=v1.16.0 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --ignore-preflight-errors=Swap --image-repository=registry.aliyuncs.com/google_containers

这个方法加了一个--image-repository=registry.aliyuncs.com/google_containers参数改变了下载地址。

不过这么做之后,你依旧要把这些docker镜像的仓库名改为k8s.gcr.io。

例如你在用命令docker images看到了镜像的列表。

里面有一个镜像叫做registry.aliyuncs.com/google_containers/kube-apiserver

那么你要用命令docker tag registry.aliyuncs.com/google_containers/kube-apiserver   k8s.gcr.io/kube-apiserver

这样的方法去改。有很多个这样的镜像它们的仓库名都要改。改完之后你可以用docker rmi 逐个的把原来registry.aliyuncs.com/google_containers打头的镜像统统删除。当然你留着也没问题。

用脚本去完成操作

#!/bin/bash## 使用如下脚本下载国内镜像,并修改tag为google的tagset -e

KUBE_VERSION=v1.16.0
KUBE_PAUSE_VERSION=3.1
ETCD_VERSION=3.3.15-0
CORE_DNS_VERSION=1.6.2

GCR_URL=k8s.gcr.io
ALIYUN_URL=registry.cn-hangzhou.aliyuncs.com/google_containers

images=(kube-proxy:${KUBE_VERSION}kube-scheduler:${KUBE_VERSION}
kube-controller-manager:${KUBE_VERSION}
kube-apiserver:${KUBE_VERSION}
pause:${KUBE_PAUSE_VERSION}
etcd:${ETCD_VERSION}
coredns:${CORE_DNS_VERSION})

for imageName in ${images[@]} ; do
  docker pull $ALIYUN_URL/$imageName
  docker tag  $ALIYUN_URL/$imageName $GCR_URL/$imageName
  docker rmi $ALIYUN_URL/$imageNamedone
done

然后再运行init命令(以下命令的参数怎么设置呢?第二行的为本机的IP,第三行是容器的版本,第四行则是pod网络,这个尽量不要改吧。)

sudo kubeadm init \
 --apiserver-advertise-address 192.168.10.20 \
 --kubernetes-version=v1.16.0 \
 --pod-network-cidr=10.244.0.0/16

如下图,然后初始化成功之后,会有一大堆的解释,其中有几条是让你运行的命令,那么就照做吧。

怎么安装Kubernets集群?

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

还有一条命令kubeadm join不是在本机上运行的。它看起来像这个样子

kubeadm join 192.168.10.20:6443 --token lixsl8.v1auqmf91ty0xl0k \
    --discovery-token-ca-cert-hash sha256:c3f92a6ed9149ead327342f48a545e7e127a455d5b338129feac85893d918a55

你要记住这个命令,因为里面有唯一的token,这个每一台都是不一样的。即使你忘了也没关系,你可以用

kubeadm token create --print-join-command

重新找到它。

还有就是可能你不是一次就能成功的,如果kubeadm init中途有失败的,你需要用命令

kubeadm reset

来重置master节点。否则会报错,报错通常会说xxx.yaml already exist

怎么安装Kubernets集群?

还有关于swap分区引起的问题

怎么安装Kubernets集群?

程序会提醒你用以下的命令去查看问题。

systemctl status kubelet
jouralctl -xeu kubelet

在完成这一切之后,你可以使用以下命令去查看pod的状态。

kubectl get pods --all-namespaces -o wide

应该类似于这样的一个样子。

怎么安装Kubernets集群?

其中coredns这个容器的状态时pending的,还需要装一下网络的组件。

安装flanneld

你已经操作过以下的操作了吧?

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

然后下载quay.io的镜像,同理用脚本去拉镜像,或者自己去镜像网站上拉镜像。

#!/bin/bash

set -e

FLANNEL_VERSION=v0.11.0

# 在这里修改源
QUAY_URL=quay.io/coreos
QINIU_URL=quay-mirror.qiniu.com/coreos

images=(flannel:${FLANNEL_VERSION}-amd64
flannel:${FLANNEL_VERSION}-arm64
flannel:${FLANNEL_VERSION}-arm
flannel:${FLANNEL_VERSION}-ppc64le
flannel:${FLANNEL_VERSION}-s390x)

for imageName in ${images[@]} ; do
  docker pull $QINIU_URL/$imageName
  docker tag  $QINIU_URL/$imageName $QUAY_URL/$imageName
  docker rmi $QINIU_URL/$imageNamedone
done

然后去网上下载这个文件

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

如果wget不能成功下载,可以在别的地方下载之后放到服务器里去,我就是用迅雷下载的这个文件。

kubectl apply -f kube-flanneld.yaml

node节点的安装

我在配置node节点的时候偷懒了,我用了master相同的的方法把所有的软件和镜像都下载下来了,实际上只要其中的一些,根据前面那个博客上的做法,你可以把在master上已经下载好的镜像打包复制到node节点上。

## master上执行docker save -o pause.tar k8s.gcr.io/pause:3.1
docker save -o kube-proxy.tar k8s.gcr.io/kube-proxy## node上执行docker load -i pause.tar 
docker load -i kube-proxy.tar 

## node上执行docker load -i pause.tar 
docker load -i kube-proxy.tar

flannel网络也得在node上进行一遍。

然后还记得那条kubeadm join的命令吗?就是那个带token的那条,可以输入了。

以上就是安装Kubernets集群的详细内容了,看完之后是否有所收获呢?如果想了解更多相关内容,欢迎关注创新互联行业资讯!


本文名称:怎么安装Kubernets集群?
URL地址:http://cdxtjz.cn/article/ipccei.html

其他资讯