一、背景
本文主要分享自己在本机mac上,基于virtualbox虚拟机和ubuntu系统,使用kubeadm工具,搭建kubernetes环境的流程,如果过程中遇到问题,欢迎大家评论交流
二、搭建环境
- macos monterey 12.2.1; 16c 256g
- virtual box 7.0
- ubuntu 20.04 桌面版
三、搭建流程
前置条件
先安装好虚拟机,安装虚拟机不是本文重点,这里就省略了,大家可以去网上找一些教程参考
注:只要本机资源足够,问题不大的,我本机配置还是有点卡,虚拟机起起来,cpu的风扇就开始疯狂的转
第一步:网络配置
目标
- 本机连通虚拟机
- 虚拟机连通互联网
操作1:打开网络管理器
管理 -> 工具 -> 网络管理器
操作2:创建Host-Only网络和NAT网络
具体配置如图,小白建议照抄
操作3:为虚拟机配置刚刚创建的网络
注:这个操作要在虚拟机关闭的条件下进行
打开虚拟机的设置
网卡1关联NAT网络
网卡二关联Host-Only网络
操作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
目标
- 集群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状态
过程中遇到的坑
1. 集群与工具版本的问题
kubernetes, kubelet, kubeadm 必须一致,在本文中是 1.22
为啥这个是坑,因为在搭建的过程中,我看了很多的教程,他们发布的年限不同,用的版本也不同
我看了一篇老教程,安装了kubelet 1.9x版本,但是后来在执行kubeadm init时,又看了新教程,指定 kubernetes 版本为 1.22,就导致了很多莫名的问题