linux

Linux上Kubernetes安装教程

小樊
36
2025-10-24 20:07:57
栏目: 智能运维

Linux上Kubernetes安装教程(以Ubuntu 22.04为例,使用kubeadm工具)

一、安装前准备

  1. 硬件要求:至少2GB RAM、2个CPU内核、20GB可用磁盘空间;
  2. 软件要求:所有节点(Master/Worker)需安装Ubuntu 22.04及以上版本,具备root或sudo权限;
  3. 网络要求:所有节点之间能互相通信(无防火墙阻拦默认端口,如6443、10250等);
  4. 基础环境:关闭SELinux(若使用CentOS)、禁用Swap分区、配置主机名与hosts文件。

二、配置基础环境

1. 关闭Swap分区

sudo swapoff -a  # 临时关闭
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab  # 永久关闭(注释fstab中的swap行)

2. 配置主机名与hosts文件

3. 安装Containerd容器运行时

Kubernetes推荐使用containerd作为容器运行时,安装步骤如下:

# 安装依赖
sudo apt update && sudo apt install -y curl gnupg2 software-properties-common apt-transport-https ca-certificates

# 添加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# 添加Docker仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 安装Docker
sudo apt update && sudo apt install -y containerd.io

# 配置containerd(创建配置文件)
sudo mkdir -p /etc/containerd
sudo containerd config default | sudo tee /etc/containerd/config.toml

# 重启containerd
sudo systemctl restart containerd
sudo systemctl enable containerd

三、安装Kubernetes核心组件

在所有节点上执行以下命令,安装kubeletkubeadmkubectl

# 添加Kubernetes官方GPG密钥
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/kubernetes-archive-keyring.gpg

# 添加Kubernetes APT仓库
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

# 更新软件包并安装组件
sudo apt update
sudo apt install -y kubelet kubeadm kubectl

# 设置组件开机自启
sudo systemctl enable kubelet

四、初始化Master节点

在Master节点上执行kubeadm init初始化集群,指定Pod网络CIDR(如10.244.0.0/16,适配Flannel插件):

sudo kubeadm init --pod-network-cidr=10.244.0.0/16

初始化完成后,终端会输出关键命令(用于加入Worker节点),例如:

kubeadm join 192.168.1.100:6443 --token abcdef.1234567890abcdef \
    --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

配置kubectl(当前用户访问集群):

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

五、安装网络插件

Kubernetes需要网络插件实现Pod间通信,常用Flannel(轻量级、易部署):

kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml

等待插件部署完成(可通过kubectl get pods -n kube-system查看插件Pod状态,需全部为Running)。

六、加入Worker节点

在Worker节点上执行Master节点输出的kubeadm join命令(替换为实际IP、Token和Hash值),将节点加入集群:

sudo kubeadm join 192.168.1.100:6443 --token abcdef.1234567890abcdef \
    --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

七、验证集群状态

在Master节点上执行以下命令,检查集群是否正常运行:

# 查看节点状态(所有节点应为Ready)
kubectl get nodes

# 查看所有Pod状态(kube-system命名空间的Pod应为Running)
kubectl get pods --all-namespaces

若节点状态为NotReady,需等待网络插件部署完成或检查节点网络配置。

八、可选步骤:部署Kubernetes Dashboard(Web管理界面)

  1. 安装Dashboard:
    kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
    
  2. 创建访问令牌(用于登录Dashboard):
    kubectl create serviceaccount dashboard-admin-sa
    kubectl create clusterrolebinding dashboard-admin-sa --clusterrole=cluster-admin --serviceaccount=default:dashboard-admin-sa
    kubectl get secret $(kubectl get sa dashboard-admin-sa -o jsonpath="{.secrets[0].name}") -o go-template="{{.data.token}}" | base64 --decode
    
  3. 访问Dashboard:通过kubectl proxy启动代理,然后在浏览器中访问http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/,输入令牌登录。

注意事项

0
看了该问题的人还看了