ubuntu安装单机版kubernetes

这篇博客介绍了如何在Ubuntu 14.04上安装单机版Kubernetes,包括Docker、etcd的安装步骤,以及Kubernetes的部署过程。博主分享了在Ubuntu上安装遇到的问题和解决方法,特别是对于etcd启动配置的注意事项。

网上kubenetes的安装大多是基于CoreOS或CentOS,Ubuntu资料比较少,由于本人测试阶段操作系统用的是ubuntu,折腾了多半天的时间才把环境搭起来,在这里简单记录一下,供需要的朋友参考


环境描述

ubuntu:14.04

docker:1.4.1

etcd:0.4.6

kubernetes:0.8.1


单机安装方式

1、安装Docker

curl -s https://get.docker.io/ubuntu/ | sudo sh

2、安装etcd,https://github.com/coreos/etcd/releases/

得到etcd的压缩包,解压后进入etcd目录,找到二进制可执行文件:etcd,拷贝到/opt/bin目录下

3、安装kubenetes

3.1这里使用已编

<think>我们将在Ubuntu 22.04上安装单机版Kubernetes(即只有一个master节点,不加入工作节点)。以下是详细步骤: ### 步骤1: 系统准备 1. **禁用交换空间**(Kubernetes要求): ```bash sudo swapoff -a sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab # 永久禁用 ``` 2. **设置主机名**(可选,此处以`k8s-master`为例): ```bash sudo hostnamectl set-hostname k8s-master ``` 3. **加载内核模块**: ```bash cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf overlay br_netfilter EOF sudo modprobe overlay sudo modprobe br_netfilter ``` 4. **配置网络参数**: ```bash 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 ``` ### 步骤2: 安装容器运行时(containerd) 1. **安装依赖**: ```bash sudo apt update sudo apt install -y curl gnupg2 software-properties-common apt-transport-https ca-certificates ``` 2. **添加Docker仓库**: ```bash curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/docker.gpg sudo add-apt-repository -y "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" ``` 3. **安装containerd**: ```bash sudo apt update sudo apt install -y containerd.io ``` 4. **配置containerd**: ```bash sudo containerd config default | sudo tee /etc/containerd/config.toml >/dev/null sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml sudo systemctl restart containerd sudo systemctl enable containerd ``` ### 步骤3: 安装Kubernetes组件 1. **添加Kubernetes仓库**(使用阿里云镜像): ```bash curl -fsSL https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/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://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list ``` 2. **安装kubeadm, kubelet, kubectl**: ```bash sudo apt update sudo apt install -y kubelet kubeadm kubectl sudo apt-mark hold kubelet kubeadm kubectl # 锁定版本 ``` ### 步骤4: 初始化集群 ```bash sudo kubeadm init \ --apiserver-advertise-address=$(hostname -I | awk '{print $1}') \ --pod-network-cidr=192.168.0.0/16 \ --image-repository=registry.aliyuncs.com/google_containers ``` > 注意: > - `--apiserver-advertise-address` 使用本机IP(自动获取) > - `--pod-network-cidr` 使用Flannel网络插件的默认网段 > - 使用阿里云镜像仓库加速 ### 步骤5: 配置kubectl ```bash mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config ``` ### 步骤6: 安装网络插件(Flannel) ```bash kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml ``` ### 步骤7: 验证安装 ```bash kubectl get nodes # 应显示STATUS为Ready kubectl get pods -n kube-system # 检查核心组件运行状态 ``` ### 常见问题解决 1. **初始化时端口占用**: ```bash sudo kubeadm reset -f sudo fuser -k 6443/tcp 10250/tcp # 释放关键端口 ``` 2. **镜像拉取失败**: ```bash # 手动拉取镜像(替换<image-name>) sudo crictl pull registry.aliyuncs.com/google_containers/<image-name> ``` 3. **节点处于NotReady状态**: - 检查网络插件是否安装成功 - 查看kubelet日志:`journalctl -xu kubelet` > 提示:单节点集群默认不会调度Pod,如需部署应用需去除master污点: > ```bash > kubectl taint nodes --all node-role.kubernetes.io/control-plane- > ``` ### 引用说明 - 系统准备步骤参考Kubernetes官方文档[^1] - 容器运行时配置采用containerd官方建议[^2] - 阿里云镜像源加速方案来自国内部署实践[^3] §§相关问题§§ 1. 如何彻底卸载Ubuntu上的Kubernetes集群? 2. 单节点Kubernetes集群有哪些性能限制? 3. 如何为Kubernetes配置持久化存储? 4. 如何升级单节点Kubernetes版本? 5. 在Kubernetes单节点上如何部署多节点应用? </think>### Ubuntu 22.04 单机版 Kubernetes 安装指南 #### 一、系统准备 1. **禁用交换空间**(Kubernetes 强制要求): ```bash sudo swapoff -a sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab # 永久禁用 ``` 2. **配置主机名解析**: ```bash echo "$(hostname -I | awk '{print $1}') $(hostname)" | sudo tee -a /etc/hosts ``` 3. **加载内核模块**: ```bash cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf overlay br_netfilter EOF sudo modprobe overlay && sudo modprobe br_netfilter ``` 4. **设置网络参数**: ```bash 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) 1. **安装依赖**: ```bash sudo apt update sudo apt install -y curl gnupg2 software-properties-common ``` 2. **添加 Docker 仓库**: ```bash curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null ``` 3. **安装 containerd**: ```bash sudo apt update sudo apt install -y containerd.io ``` 4. **配置 containerd**: ```bash sudo containerd config default | sudo tee /etc/containerd/config.toml sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml sudo systemctl restart containerd ``` #### 三、安装 Kubernetes 组件 1. **添加阿里云镜像源**: ```bash curl -fsSL https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/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://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list ``` 2. **安装组件**: ```bash sudo apt update sudo apt install -y kubelet kubeadm kubectl sudo apt-mark hold kubelet kubeadm kubectl # 锁定版本 ``` #### 四、初始化单节点集群 ```bash sudo kubeadm init \ --apiserver-advertise-address=$(hostname -I | awk '{print $1}') \ --pod-network-cidr=10.244.0.0/16 \ --image-repository=registry.aliyuncs.com/google_containers \ --ignore-preflight-errors=NumCPU # 单机可忽略CPU检查 ``` > 📌 注意: > - `--apiserver-advertise-address` 使用本机IP > - `--pod-network-cidr` 使用 Flannel 的默认网段 > - 阿里云镜像加速避免超时问题[^3] #### 五、配置访问权限 ```bash mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config # 允许在master节点部署Pod kubectl taint nodes --all node-role.kubernetes.io/control-plane- ``` #### 六、安装网络插件(Flannel) ```bash kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml ``` #### 七、验证安装 ```bash kubectl get nodes # 应显示 STATUS=Ready kubectl get pods -n kube-system # 检查核心组件 ``` #### 八、测试部署 ```bash kubectl create deployment nginx --image=nginx kubectl expose deployment nginx --port=80 --type=NodePort kubectl get svc nginx # 访问输出的端口号验证 ``` ### 常见问题解决 1. **初始化失败**: ```bash sudo kubeadm reset -f sudo rm -rf /etc/cni/net.d /etc/kubernetes/ ~/.kube/ ``` 2. **镜像拉取失败**: ```bash sudo kubeadm config images pull \ --image-repository=registry.aliyuncs.com/google_containers ``` 3. **端口占用冲突**: ```bash sudo fuser -k 6443/tcp 10250/tcp # 释放关键端口 ``` > 💡 **提示**:单节点集群适合开发测试,生产环境建议至少3节点[^1] ### 引用说明 - 内核参数配置参考 Kubernetes 官方文档[^1] - 阿里云镜像源加速方案来自国内部署实践[^3] - 单节点调度优化基于控制平面节点调度规则[^2]
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值