Kubernetes(简称k8s)是容器编排领域的标准平台,用于自动化部署、扩展和管理容器化应用。以下是在Ubuntu 22.04 LTS上搭建单节点集群的完整步骤。
一、环境准备
- 系统要求Ubuntu 22.04 LTS
- 至少2核CPU、2GB内存、20GB磁盘
- 禁用交换分区(必须):
sudo swapoff -a
sudo sed -i '/ swap / s/^(.*)$/#1/g' /etc/fstab
- 设置主机名和hosts解析
sudo hostnamectl set-hostname k8s-master # 主节点命名
echo "127.0.0.1 k8s-master" | sudo tee -a /etc/hosts
- 启用内核模块
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
- 配置网络参数
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
sudo sysctl --system
二、安装容器运行时(containerd)
- 安装containerd
sudo apt update
sudo apt install -y containerd
- 生成默认配置
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
- 启用systemd cgroup驱动 编辑 /etc/containerd/config.toml,修改:
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
...
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
SystemdCgroup = true # 将false改为true
- 重启服务
sudo systemctl restart containerd
sudo systemctl enable containerd
三、安装Kubernetes组件
- 添加APT仓库
sudo apt install -y apt-transport-https ca-certificates curl
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
- 安装kubeadm、kubelet和kubectl
sudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl # 锁定版本
四、初始化集群(主节点)
- 初始化控制平面
sudo kubeadm init --pod-network-cidr=10.244.0.0/16 # 指定Pod网段
- 配置kubectl
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
- 检查节点状态
kubectl get nodes # 应显示"NotReady"(等待网络插件)
五、安装网络插件(Calico)
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.27.0/manifests/calico.yaml
等待所有Pod就绪:
kubectl get pods -n kube-system
六、验证集群功能
- 部署测试应用
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
- 查看服务
kubectl get svc nginx # 获取NodePort(如32000)
curl http://localhost:32000 # 应返回Nginx欢迎页
七、管理集群常用命令
|
功能 |
命令示例 |
|
查看节点 |
kubectl get nodes |
|
查看Pod |
kubectl get pods -A |
|
删除服务 |
kubectl delete svc/nginx |
|
查看集群信息 |
kubectl cluster-info |
|
重置集群 |
sudo kubeadm reset –force |
故障排查
- Pod卡在Pending状态:检查网络插件是否安装成功。
- kubelet无法启动:运行 journalctl -u kubelet 查看日志。
- 容器运行时问题:执行 sudo crictl ps 验证containerd状态。
注意:生产环境需部署多节点集群并配置高可用。学习环境可使用Minikube简化安装。
通过以上步骤,您已在Ubuntu上成功搭建Kubernetes集群,可开始部署容器化应用!
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...