零基础手动搭建 k8s 那点事

本文记录了一次手动搭建k8s集群的全程,包括环境准备、关闭swap、安装docker和k8s组件、初始化master节点、安装网络插件、节点加入、部署dashboard以及故障排查等步骤。在搭建过程中,遇到了镜像拉取困难、网络配置问题和dashboard安装等问题,通过代理、端口映射和ssh转发等方式逐一解决,最终成功搭建并实现了监控功能。
摘要由CSDN通过智能技术生成

零基础手动搭建 k8s 那点事

起步

这是我第二次手动搭建 k8s 了,相较于第一次用掉一天时间,这次花费半天。当然,这其中倒不全是 k8s 的问题。是网络。而网络又是一个很大的概括,更细分则是:k8s 需要的镜像国内拉取不下来;需要的 yaml 文件下载不下来;B 电脑里的虚拟机的端口在 A 电脑上访问不到。

事实上我遇到的问题可以通过代理和 virtual box 的端口映射解决,但我没有。我很庆幸,这个“没有”让我明明才接触 k8s,却学到了一些故障排查方式,以及对 yaml 文件的部分 key 值有所了解,还学到了 ssh 端口转发。赚大发了。

以下是整个流程的记录,半数在过程中记下,半数靠成功之后回忆所来,若有纰漏,望不吝赐教。

环境准备

(这一小节中的操作,需要在所有参与集群的服务器上操作)

先说说我的环境准备。

我在笔记本电脑 B 上,用虚拟机起了三个 ubuntu 16 server 服务。其中,k1 作为 master,分配了 2g 内存 2核,k2、k3 是普通 node,同为 1g 1核。要求三台机器可以相互 ping 通。

普通用户执行 sudo passwd root 修改 root 密码,允许 root 用户 ssh 登陆则需要大家自行百度。我均以 root 账户操作,可以避免一些不必要的麻烦。

关闭 swap

k8s 要求 linux 关闭 swap 功能。打开 /etc/fstab 文件,注释最后一行内容:

$ vim /etc/fstab
# 注释以下内容
# /dev/mapper/ubuntu--vg-swap_1 none            swap    sw              0       0

$ reboot  # 重启服务器

安装 docker

添加 docker 源:

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
$ add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
$ apt update

使用 apt-cache madison docker-ce 查询可安装版本。这里我选择了 17.03.3ce-0ubuntu-xenial:

$ apt install docker-ce=17.03.3~ce-0~ubuntu-xenial

安装 kubeadm、kubelet、kubectl

添加 k8s 国内源:

$ curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
$ echo "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" >> /etc/apt/sources.list.d/kubernetes.list
$ apt update

安装相关工具:

$ apt install -y kubelet kubeadm kubectl

安装成功后可通过 kubeadm version 查看版本,我的环境输出如下:

kubeadm version: &version.Info{
  Major:"1", Minor:"20", GitVersion:"v1.20.4",
  GitCommit:"e87da0bd6e03ec3fea7933c4b5263d151aafd07c", 
  GitTreeState:"clean", BuildDate:"2021-02-18T16:09:38Z", 
  GoVersion:"go1.15.8", Compiler:"gc", Platform:"linux/amd64"
}

初始化 master 节点

k8s 需要一个 master 节点,这里我选择 k1,也就是 2g 2核 那个环境。

初始化 k8s 需要一些镜像,我们可以先执行 kubeadm config images list 查看所需镜像:

k8s.gcr.io/kube-apiserver:v1.20.4
k8s.gcr.io/kube-controller-manager:v1.20.4
k8s.gcr.io/kube-scheduler:v1.20.4
k8s.gcr.io/kube-proxy:v1.20.4
k8s.gcr.io/pause:3.2
k8s.gcr.io/etcd:3.4.13-0
k8s.gcr.io/coredns:1.7.0

k8s.gcr.io 开头的镜像不用代理拉不下来,这里可以用 –image-repository 指定阿里镜像源。初始化命令如下:

$ kubeadm init \
  --image-repository registry.aliyuncs.com/google_containers \
  --apiserver-advertise-address=10.0.2.15 \
  --pod-network-cidr=192.168.16.0/20
  • --apiserver-advertise-address 指定了 k1 的 ip 地址,不同环境对应的值不同
  • --pod-network-cidr 用于 k8s 中的 pod 通信,如果你不懂什么意思,就跟着我设相同的值

执行成功之后,你能得到以下输出:

Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值