如何搭建socks5和ss节点_简单的 Kubernetes 集群搭建

如何搭建socks5和ss节点_简单的 Kubernetes 集群搭建本文详细介绍了如何使用 Kubeadm 搭建一个单 Master 双子节点的 Kubernetes 集群 包括环境配置 基础组件安装 Flannel 组网 添加子节点 验证集群状态以及搭建 KubernetesDa 并免权限认证

fc7a06050c7206ecadffc07e8854a785.png

本文使用「署名 4.0 国际 (CC BY 4.0)」许可协议,欢迎转载、或重新修改使用,但需要注明来源。 署名 4.0 国际 (CC BY 4.0)

本文作者: 苏洋

创建时间: 2018年10月03日 统计字数: 28480字 阅读时间: 57分钟阅读 本文链接: https://soulteary.com/2018/10/03/how-to-get-your-k8s-cluster.html


简单的 Kubernetes 集群搭建

一直以来因为机器资源捉襟见肘,使用 GitLab CI 配合 compose 完成了多数自动化构建和部署的事情,但是随着运行服务越来越多,管理一大堆 docker-compose.yml 和服务的成本也变的越来越高。

作为一个懒人,购置了一台顶配的 ELite Desk G4 800 来作为资源,计划搭建 K8S 配合 GitLab 的 Auto DevOps 作为接下来使用的方案。

网上关于 K8S 的搭建使用有很多,但是多数都是基于 CentOS、二进制包的教程,太过陈旧和麻烦。

而且在操作过程中,基本都是一路 Next,缺少调试验证,本篇以一个 K8S 新手视角,介绍如何快速搭建一套开发可用的 mini 集群。

我这里计划创建一个单 Master 双子节点的集群。

官方工具箱 Kubeadm

Kubeadm 作为官方推出的 K8S 工具箱,旨在协助开发者能够快速 搭建使用 Kubernetes 的各种核心功能,包括: - 配置并启动 master 节点 - 配置并启动 worker 节点,并加入 master 节点,组成集群 - 升级集群到最新版本 - 管理你的集群的详细配置 - 管理你的集群 token - …

想要了解更多,可以查看官方文档 。

为了简化操作和维护成本,本次集群的搭建就使用它来进行。不过相比较手动配置的灵活,kubeadm 目前存在一些限制,比如它仅支持部分版本的操作系统,参考官方文档:开始安装 kubeadm 之前。

而且每台主机或者虚拟机至少要分配 2核心2GB 的内存。

我这里使用的资源是三台 2核心4GB 的虚拟机,操作系统为 ubuntu ,为了使用 docker 官方的软件包,我将系统版本选择为 16.04

我在这里对这三台机器分别进行了命名和固定IP分配:

  • (Master Node) potato 10.11.12.180
  • (Worker Node) potato-chips 10.11.12.181
  • (Worker Node) potato-salad 10.11.12.182

配置基础环境

在开始搭建集群之前,我们需要先进行一些基础环境的配置。

SSH 认证授信

接下来的操作,包含大量的 ssh 操作,为了避免麻烦,可以将你的用户秘钥添加到远程主机中。

ssh-copy-id -i ~/.ssh/YOUR_KEY.pub YOUR_HOST_NAME_OR_HOST_IP

完全关闭SWAP交换分区

网上的教程一般都只会引导用户使用 swapoff 命令进行分区关闭,但是一旦主机重启,这个命令的作用就“失效”了,所以这里建议使用我下面提供的命令一劳永逸的完全关闭 swap 分区。

sudo swapoff -a cat /etc/fstab | grep -v '^#' | grep -v 'swap' | sudo tee /etc/fstab

配置主机名称和基础解析

在建设集群之前,我们需要确保节点之间的以下要素不同:

  • 系统主机名不同
  • 硬件 product_id
  • 网卡 MAC地址

我们先设置主机名,比如设置主机名为 potato

sudo hostnamectl set-hostname potato

设置完主机名称之后,我们需要将主机名称对应的基础解析指向本地。

echo "127.0.0.1 `hostname`" | sudo tee -a /etc/hosts

至于 MAC 地址,你可以直接使用 ifconfig 进行设置,也可以修改 /etc/network/interfaces 进行设置。如果你也是虚拟机用户,我建议直接在硬件层面进行设置,一劳永逸,另外,如果你在硬件层面设置了 MAC 地址,product_id 也会随之变化。

提了这么多次 product_id ,那么该如何查看它的内容呢,很简单:

sudo cat /sys/class/dmi/id/product_uuid

安装docker

在安装 K8S 和各种 K8S TOOLBOX 之前,我们需要先对系统进行一些基础配置,在之前的文章中,我有介绍过如何更优雅的安装 docker

但是这里稍稍有一些不同:这里必须使用指定版本的 docker-ce ,目前 18.0x 的 docker-ce 暂时未通过 K8S 测试验证,不能被直接使用。

之前的安装命令 apt install docker-ce 需要被替换为下面的命令来进行指定版本的软件安装:

apt-get update && apt-get install -y docker-ce=$(apt-cache madison docker-ce | grep 17.03 | head -1 | awk '{print $3}')

为了避免软件在后续维护系统的过程中被误升级,我们可以锁定它的版本:

apt-mark docker-ce

加速 docker-ce 的下载和安装

如果你觉得从官方下载 docker-ce 比较慢,可以在添加了 gpg 秘钥后,将添加软件仓库地址从官方源改为其他镜像源,比如使用下面的命令添加一个新的软件源:

add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

然后执行前面说到的安装命令,进行更快速的安装。

安装 Kubeadm、Kubectl、Kubelet

这里参考了部分官方文档 Creating a single master cluster with kubeadm ,但是请注意,目前官方已经关闭了 v1 版本的 docker 仓库的接口,所以如果你准备挂代理直接下载软件镜像包,需要修改 /etc/docker/daemon.json,强制停用 v1 版本的 API:

{ "disable-legacy-registry": true }

由于 K8S 搭建之后,升级不是很频繁,可以直接使用导入离线的软件包,进行快速的服务搭建和升级,而对机器上的 docker 配置做到使用默认配置不进行改动。

获取镜像并导出为离线镜像包

我们这里使用到的软件包镜像名称列表如下:

k8s.gcr.io/kube-apiserver-amd64:v1.11.3 k8s.gcr.io/kube-controller-manager-amd64:v1.11.3 k8s.gcr.io/kube-scheduler-amd64:v1.11.3 k8s.gcr.io/kube-proxy-amd64:v1.11.3 k8s.gcr.io/pause:3.1 k8s.gcr.io/etcd-amd64:3.2.18 k8s.gcr.io/coredns:1.1.3 k8s.gcr.io/kubernetes-dashboard-amd64:v0.10.0 quay.io/coreos/flannel:v0.10.0-amd64

将列表保存为文件,在可以获取镜像的云机器上,使用下面的命令可以自动将镜像下载并进行导出。

PACKAGES=`cat ./images/11.txt`; for package in $PACKAGES; do docker pull "$package"; done docker images | tail -n +2 | grep -v "<none>" | awk '{printf("%s:%sn", $1, $2)}' | while read IMAGE; do echo "find image: $IMAGE" filename="$(echo $IMAGE| tr ':' '-' | tr '/' '-').tar" echo "save as $filename" docker save ${IMAGE} -o $filename done

然后将下载并导出的 *.tar 镜像包下载到要搭建集群的机器上,使用下面的命令即可批量导入镜像到系统,避免了要为集群机器配置代理等操作。

ls *.tar | xargs -I {} docker load -i {}

上面的脚本,我保存在了 GitHub : soulteary/k8s-images-trans-helper 。

加载 IPVS 内核模块

为了避免 IPVS 内核模块没有加载,而报 RequiredIPVSKernelModulesAvailable 的错误,我们使用下面的命令加载所有支持的 IPVS 模块。

lsmod | grep ^ip_vs | awk '{print $1}' | xargs -I {} modprobe {}

安装 K8S 环境

安装依赖工具、添加 GPG 秘钥、添加软件仓库,进行软件下载:

apt-get update && apt-get install -y apt-transport-https curl curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - cat <<EOF >/etc/apt/sources.list.d/kubernetes.list deb http://apt.kubernetes.io/ kubernetes-xenial main EOF apt-get update apt-get install -y kubelet kubeadm kubectl apt-mark hold kubelet kubeadm kubectl

上面的命令是官方文档提供的,实际上你可能会遇到添加 GPG 秘钥出错的情况,并且使用官方源进行下载失败的情况,为此我为你准备了一套适合国内环境使用的命令。

apt-get update && apt-get install -y apt-transport-https curl cat google-apt-key.gpg | apt-key add - add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-$(lsb_release -cs) main" apt update && apt install -y kubelet kubeadm kubectl

这里的 GPG 秘钥可以和离线镜像包一样,使用云主机下载下来,放置于你执行命令的目录,然后使用 cat 命令读取内容,再使用 apt-key 进行添加操作。

和配置 docker 一样,我们需要锁定软件版本,避免“意外”的出现。

apt-mark hold kubelet kubeadm kubectl

如果你网速够快,1分钟之内,你的 K8S 软件包就都就绪了,接下来就能够进行集群的搭建了。

搭建集群

登录服务器,使用 kubeadm init 命令进行 master 节点的初始化,因为我选择使用 flannel 作为组网工具,所以我在初始化命令后面添加了 CIDR 参数。

kubeadm init --apiserver-advertise-address=10.11.12.180 --pod-network-cidr=10.244.0.0/16

启动 Master 节点

这里偷个懒,直接使用 root 用户启动程序&#x

今天的文章 如何搭建socks5和ss节点_简单的 Kubernetes 集群搭建分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2024-12-14 12:21
下一篇 2024-12-14 12:17

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/86241.html