怎么安装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
接下来就是开始下软件和拉镜像的活了。它们同时存在的问题就是官方源不能下(因为它是某外国知名搜索引擎的服务器)。所以要加一下镜像源。
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
安装 kubelet、kubeadm、kubectl,注意一下版本,yum源下载的版本默认是最新的,那么容器镜像至少要比这个版本新,如果没有,请在下载的时候注明版本信息。我在做本次测试环境的时候所有的软件和镜像都是1.16.0的版本。
加阿里云的镜像源。
cat>>/etc/yum.repos.d/kubrenetes.repo<<EOF
[kubernetes]
name=Kubernetes Repo
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
EOF
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 <package> //这个是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 <images>逐个的把原来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
如下图,然后初始化成功之后,会有一大堆的解释,其中有几条是让你运行的命令,那么就照做吧。
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
还有关于swap分区引起的问题
程序会提醒你用以下的命令去查看问题。
systemctl status kubelet
jouralctl -xeu kubelet
在完成这一切之后,你可以使用以下命令去查看pod的状态。
kubectl get pods --all-namespaces -o wide
应该类似于这样的一个样子。
其中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集群的详细内容了,看完之后是否有所收获呢?如果想了解更多相关内容,欢迎关注天达云行业资讯!