mac virtualbox ubuntu kubadm 搭建kubernetes环境

194 阅读3分钟

一、背景

本文主要分享自己在本机mac上,基于virtualbox虚拟机和ubuntu系统,使用kubeadm工具,搭建kubernetes环境的流程,如果过程中遇到问题,欢迎大家评论交流

二、搭建环境

  • macos monterey 12.2.1; 16c 256g
  • virtual box 7.0
  • ubuntu 20.04 桌面版

三、搭建流程

前置条件

先安装好虚拟机,安装虚拟机不是本文重点,这里就省略了,大家可以去网上找一些教程参考

注:只要本机资源足够,问题不大的,我本机配置还是有点卡,虚拟机起起来,cpu的风扇就开始疯狂的转

第一步:网络配置

目标

  1. 本机连通虚拟机
  2. 虚拟机连通互联网

操作1:打开网络管理器

管理 -> 工具 -> 网络管理器

image.png

操作2:创建Host-Only网络和NAT网络

具体配置如图,小白建议照抄

image.png image.png

操作3:为虚拟机配置刚刚创建的网络

注:这个操作要在虚拟机关闭的条件下进行

打开虚拟机的设置

image.png

网卡1关联NAT网络

image.png

网卡二关联Host-Only网络

image.png

操作4:配置网络适配器

启动虚拟机,打开Terminal

vi /etc/netplan/00-installer-config.yaml

network:
  ethernets:
    enp0s3:
      dhcp4: true
    enp0s8:
      nameservers:
        addresses: [114.114.114.114]
      dhcp4: no
      addresses:
        - 192.168.56.2/24
  version: 2

netplan apply

最后检验成果

在虚拟机里 ping www.baidu.com

在主机里 ping 192.168.56.2/24

如果都能ping通,就代表配置好了

操作5:本机 ssh root 连接虚拟机

安装ssh-server

apt install openssh-server

设置root密码,随便设置下,比如123

passwd root

修改配置允许root远程登录

vi /etc/ssh/sshd_config

找到这一行,修改成yes即可
PermitRootLogin yes

重新启动ssh server服务,使得新配置生效

service ssh restart

检验成果,本机尝试远程连接

ssh -p 22 root@192.168.56.2

连接成功,就完成了本阶段的全部目标了

第二步:使用kubeadm搭建kubernetes

目标

  1. 集群ready

注:为避免权限的坑,影响大家的操作体验,小白建议直接root操作

操作1:安装工具

# 安装 https 相关工具
apt-get update
apt-get install -y apt-transport-https ca-certificates curl

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

apt-get update
apt-get install  docker-ce=5:20.10.7~3-0~ubuntu-focal

# 修改 docker 的cgroup驱动为systemd
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://uy35zvn6.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
systemctl daemon-reload
systemctl restart docker

# 安装kubeadm
curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
tee /etc/apt/sources.list.d/kubernetes.list <<-'EOF'
deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main
EOF
apt-get install -y kubelet=1.22.2-00 kubeadm=1.22.2-00 kubectl=1.22.2-00
sudo apt-mark hold kubelet kubeadm kubectl

操作2:安装集群

kubeadm init \
 --image-repository registry.aliyuncs.com/google_containers \
 --kubernetes-version v1.22.2 \
 --pod-network-cidr=192.168.0.0/16 \
 --apiserver-advertise-address=192.168.56.2

输出里包含这句,就代表安装成功了 Your Kubernetes control-plane has initialized successfully!

操作3:配置 kubectl 访问集群

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

# 去除mater节点的污点
kubectl taint nodes --all node-role.kubernetes.io/master-

操作5:配置网络插件

$ kubectl create -f https://projectcalico.docs.tigera.io/archive/v3.23/manifests/tigera-operator.yaml
$ kubectl create -f https://projectcalico.docs.tigera.io/archive/v3.23/manifests/custom-resources.yaml

操作6:验证成果

node 进入ready状态,所有的pod都是running状态

image.png image.png

过程中遇到的坑

1. 集群与工具版本的问题

kubernetes, kubelet, kubeadm 必须一致,在本文中是 1.22

为啥这个是坑,因为在搭建的过程中,我看了很多的教程,他们发布的年限不同,用的版本也不同

我看了一篇老教程,安装了kubelet 1.9x版本,但是后来在执行kubeadm init时,又看了新教程,指定 kubernetes 版本为 1.22,就导致了很多莫名的问题

参考资料

glory.blog.csdn.net/article/det…

xie.infoq.cn/article/471…

juejin.cn/post/722003…