同福

使用rancher/rancher:v2.5.17-rc4镜像安装kubernetes环境

介绍

介绍

前面我们学会了使用docker-compose部署一整套网站运行环境,在大部分场景下docker-compose完全可以应付各种运维需求了,基本上只要是在一台服务器可以满足的情况下都可以用docker-compose搞定!

那么问题来了,如果是多台服务器的情况下用什么软件来做运维管理呢?相信很多朋友已经想到了,没错,就是主流服务器集群方案——kubernetes(k8s)。k8s可以实现将多台服务器连接成一个服务器的集群环境,通过k8s可以在服务器集群里面部署我们的服务。不仅如此,k8s还提供了各种辅助功能,可以实现更加安全可靠的服务运行环境。

rancher是一套通过docker方式搭建k8s服务器集群环境的解决方案,rancher/rancher是一个管理平台,可以界面化地管理k8s的各个节点、各种服务!rancher/rancher-agent是配置k8s节点的,包括etcd、apiserver、kubelet等等的k8s需要的服务都可以通过rancher/rancher-agent安装起来!

今天福哥就带着大家一起学习如何使用rancher搭建一个k8s服务器集群环境~

注意:以下的教程里面需要在服务器上面操作的都是在TFCentOS7x64服务器上执行,除非有特别说明的才会去TFCentOS7x64Node1上执行!

环境

镜像版本
rancher/rancher:v2.5.17-rc4
操作系统CentOS 7 x86_64 2009
服务器TFCentOS7x64、TFCentOS7x64Node1
IP192.168.168.68、192.168.168.69
端口9443

安装

TFCentOS7x64Node1

创建虚拟机

k8s架构需要至少一个节点,这个节点服务器最好是干净的空系统,因为整个服务器的CPU、内存资源都会被k8s直接管理。如果我们在这个节点里面安装了其他服务,就会导致k8s管理后台对节点服务器的可用资源的判断出现问题,明明服务器已经没有资源了还是会被k8s管理后台分配负载。

所以福哥又重新搭建了一个CentOS7x64的虚拟机TFCentOS7x64Node1,主机名设置为tfcentos7x64node1,IP地址设置为192.168.168.69,大家可以参考前面的课程自己搭建起来!

home/topic/2023/0828/20/276ecc218c4560ba647746f09d515349.png

docker-ce

虚拟机TFCentOS7x64Node1服务器只需要安装一个docker-ce就可以了。

yum -y install yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum -y install docker-ce-18.06.3.ce-3.el7
systemctl start docker
systemctl enable docker

home/topic/2023/0828/20/8ac4716586eba83889a821137a9c0dbb.png

关闭防火墙

虚拟机TFCentOS7x64Node1服务器需要把默认的防火墙关闭掉。

systemctl stop firewalld
systemctl disable firewalld

home/topic/2023/0828/20/5c72a30f6309cbe9a5f676771d547c87.png

在TFCentOS7x64Node1的/etc/docker/daemon.json里面添加insecure-registries记录。

{
  "insecure-registries": [
    "registry.tongfu.net:5000"
  ]
}

home/topic/2023/0427/16/a4a0b9ffcfb0410d9d796b2f2af3c4a5.png

现在hub.docker.com依然打不开,大家就选这个版本吧!

在TFCentOS7x64里面拉取镜像rancher/rancher:v2.5.17-rc4并且添加到registry.tongfu.net:5000私有仓库里面。

docker pull rancher/rancher:v2.5.17-rc4
docker tag rancher/rancher:v2.5.17-rc4 registry.tongfu.net:5000/rancher/rancher:v2.5.17-rc4
docker rmi rancher/rancher:v2.5.17-rc4
docker images | grep 'rancher/rancher'

home/topic/2023/0828/21/43851cc17aeeba7a5a471dc081799374.png

k8s

这个k8s镜像就是kubernetes架构用到的一系列相关功能的镜像了。k8s的镜像非常多,如果我们一个一个的拉取非常麻烦。而且docker官方镜像的速度慢的不行,还经常拉取卡死、拉取失败。

为了解决这个问题,福哥打算把k8s镜像都放到之前搭建的私有镜像仓库registry.tongfu.net:5000里面。福哥写了一个shell脚本用来将官方的镜像拉取下来再推送到私有镜像仓库里面,大家可以拿去使用。

#!/bin/sh

# argv

# function

function _main()
{
  local image=$1

  if [ "" = "${image}" ] ; then
    echo "Usage: imagePTP IMAGE"
    exit 1
  fi

  myImageTest="`docker images | awk '{printf(\"%s:%s \n\",$1,$2)}' | grep 'registry.tongfu.net:5000/'${image}' '`"
  if [ "" = "${myImageTest}" ] ; then
    echo "Pulling image ${image}..."
    docker pull $image

    echo "Tag image ${image}..."
    docker tag $image registry.tongfu.net:5000/$image
    docker rmi $image
  fi

  myImageName="`echo \"${image}\" | sed 's/\([^:]\+\):.*/\1/'`"
  myImageTag="`echo \"${image}\" | sed 's/[^:]\+:\(.*\)/\1/'`"
  myImageNameTest="`curl -sS registry.tongfu.net:5000/v2/_catalog | grep '\"'${myImageName}'\"'`"
  myImageTagTest="`curl -sS registry.tongfu.net:5000/v2/${myImageName}/tags/list | grep '\"'${myImageTag}'\"'`"
  if [[ "" = "${myImageNameTest}" || "" = "${myImageTagTest}" ]] ; then
    echo "Pushing image ${image}..."
    docker push registry.tongfu.net:5000/$image
  fi
}

# main

_main "$@"

home/topic/2023/0828/21/8470ab3a076a09f3ccc5960b476a8db9.png

这是k8s镜像列表,大家可以直接执行。

/tongfu.net/bin/imagePTP.sh rancher/hyperkube:v1.20.15-rancher2
/tongfu.net/bin/imagePTP.sh rancher/kube-api-auth:v0.1.4
/tongfu.net/bin/imagePTP.sh rancher/mirrored-calico-cni:v3.17.2
/tongfu.net/bin/imagePTP.sh rancher/mirrored-calico-kube-controllers:v3.17.2
/tongfu.net/bin/imagePTP.sh rancher/mirrored-calico-node:v3.17.2
/tongfu.net/bin/imagePTP.sh rancher/mirrored-calico-pod2daemon-flexvol:v3.17.2
/tongfu.net/bin/imagePTP.sh rancher/mirrored-cluster-proportional-autoscaler:1.8.1
/tongfu.net/bin/imagePTP.sh rancher/mirrored-coredns-coredns:1.8.0
/tongfu.net/bin/imagePTP.sh rancher/mirrored-coreos-etcd:v3.4.15-rancher1
/tongfu.net/bin/imagePTP.sh rancher/mirrored-coreos-flannel:v0.15.1
/tongfu.net/bin/imagePTP.sh rancher/mirrored-ingress-nginx-kube-webhook-certgen:v1.1.1
/tongfu.net/bin/imagePTP.sh rancher/mirrored-metrics-server:v0.5.0
/tongfu.net/bin/imagePTP.sh rancher/mirrored-pause:3.6
/tongfu.net/bin/imagePTP.sh rancher/nginx-ingress-controller:nginx-1.2.1-rancher1
/tongfu.net/bin/imagePTP.sh rancher/rancher-agent:v2.5.17-rc4
/tongfu.net/bin/imagePTP.sh rancher/rke-tools:v0.1.80
/tongfu.net/bin/imagePTP.sh rancher/shell:v0.1.13

home/topic/2023/0828/22/1a5ec3b639a5405ae35f4070289f3bee.png

启动容器

默认情况下rancher/rancher会占用80和443端口,不过我们的80和443端口已经分配给了nginx服务了。所以福哥把rancher/rancher的443端口改成了9443,而rancher/rancher的80端口就不映射出来了。

rancher/rancher负责管理各个k8s节点服务器,还需要根据服务器运行情况进行报警,还需要根据服务器资源使用情况进行动态调整。所以这里面需要赋予“--privileged”特权,这个特权允许rancher/rancher访问宿主机,便于rancher/rancher管理服务器。

在TFCentOS7x64里面运行下面的命令启动rancher容器。

docker run -tid \
--name tfrancher \
-h tfrancher \
--net tfnet \
-p 9443:443 \
--privileged \
registry.tongfu.net:5000/rancher/rancher:v2.5.17-rc4

home/topic/2023/0828/22/67da5db17f51a0a17be62e00f3fc12e4.png

其他功能福哥会在后面的课程陆续给大家讲解的,敬请期待~~

问题

rancher管理后台打不开

如果发现rancher管理后台打不开了!可以查看日志看看是什么问题!

docker logs tfrancher --tail 10

如果发现是这个错误信息,就表示我们的电脑可用资源不足了。可以关闭一些其他应用程序,然后重新启动tfrancher容器!

[FATAL] k3s exited with: exit status 255

docker start tfrancher

总结

今天福哥带着大家学习了Docker容器集群解决方案kubernetes(k8s)的基本使用技巧,k8s相比较docker-compose要复杂的多得多,后面福哥会一点一点地教给大家k8s的各个功能的使用技巧,敬请期待~~

安装kubernetes(k8s)需要大量的docker服务协同在一起工作,下载镜像成为了最为艰辛的一个环节。福哥前前后后折腾了三遍,还是失败了!最后福哥就把依赖的全部镜像都一口气拉取下来,然后再通过私有镜像仓库添加k8s节点,这样才算顺利添加成功!真是不容易啊~~