基于Docker部署Kubernetes
基于Docker部署Kubernetes
学习环境架构搭建
创建VPC
在AWS创建一个拥有一个子网的VPC

创建安全组
安全组为了方便最好把ssh的22端口以及Kubernetes API服务的端口6443设置为入站规则。

启动模板创建
根据最小配置。

编写用户数据。
|
问题来了,当我试图用用户数据来做启动后的自动安装配置,由于Ubuntu版本命令已经不用apt-key了,所以在实例启动后并没有得到相应的环境,不过没有问题。
Master主节点
配置主节点环境以及准备初始化主节点
1. 安装docker
# 更新本地的包索引数据库,这样在安装新软件时能获取到最新的软件包。 |
2.关闭Swap
# 禁用swap(交换空间)。Kubernetes要求禁用swap,因为需要严格的资源控制和隔离,swap存在可能会影响性能和调度决策。 |
3.安装 cri-dockerd
wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.4/cri-dockerd_0.3.4.3-0.ubuntu-jammy_amd64.deb |
4.启动并配置开机启动 cri-dockerd
sudo systemctl enable --now cri-docker.service |
- 这些命令设置
cri-docker服务和socket的启动和开机自启动,确保Kubernetes可以正确与Docker通信。
5.安装 kubeadm、kubelet、kubectl
sudo apt-get update |
# 下载并安装Kubernetes的GPG密钥,用于验证后续安装包的完整性。 |
# 添加Kubernetes的软件源,以便安装kubeadm、kubelet和kubectl。 |
sudo apt-get update |
- 测试拉取,然后查看需要的images

- 拉取镜像
sudo docker pull registry.aliyuncs.com/google_containers/kube-apiserver:v1.27.4 |
- 修改配置文件

第一次尝试初始化
粗心大意,podSubnet没有注意大小写

第二次尝试初始化
需要reset一下kubeeadm
# 我们用的是docker |

验证
出现了两个问题,总的来说就是权限问题和连接问题.

权限问题解决
sudo chown ubuntu:ubuntu /etc/kubernetes/admin.conf |
解决完权限问题后,连接问题也解决了

经过一定的搜寻和思考,
- 运行上述命令后,你实际上是在改变
/etc/kubernetes/admin.conf文件的所有权,将其从root用户和组更改为ubuntu用户和组。这样做的直接结果是,普通用户ubuntu现在有权限读取这个文件。 - 在k8s中集群中,
admin.conf文件包含了连接到集群的 K8s API 服务器的必要凭证和连接信息。这包括 API 服务器的地址、端口、使用的证书等。当你以ubuntu用户身份运行kubectl命令时,kubectl会尝试读取这个配置文件来获取连接到 K8s 集群的必要信息。
先观察一下kubelet日志
sudo journalctl -u kubelet -f |

再看一眼pod的日志
# 指定namespace; |
这种情况,大概率是网络上的,问题,经过查找需要安装一些网络插件

安装部署 Calico 网络插件
# 安装 |
Node 节点加入集群
先在master节点查看加入命令
sudo kubeadm token create --print-join-command |
# 加入命令,并指定cri-socket |
为了node节点加入必备组件
成功后会显示

然后主节点查看加入集群的节点

ps:如果报couldn’t get current server API group list: Get “http://localhost:8080/api?timeout=32s": dial tcp 127.0.0.1:8080: connect: connection refused的话,大概率是终端断连导致之前export的环境变量失效了,可以在/etc/environment文件中加入KUBECONFIG=”/etc/kubernetes/admin.conf”以使环境变量永久生效
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Kalyan的小书房!
評論

.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)