Linux上Kubernetes安装教程(以Ubuntu 22.04为例,使用kubeadm工具)
sudo swapoff -a # 临时关闭
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab # 永久关闭(注释fstab中的swap行)
k8smaster):sudo hostnamectl set-hostname k8smaster
/etc/hosts文件中添加节点信息(替换为实际IP):echo "<Master-IP> k8smaster" | sudo tee -a /etc/hosts
echo "<Worker1-IP> k8sworker1" | sudo tee -a /etc/hosts
echo "<Worker2-IP> k8sworker2" | sudo tee -a /etc/hosts
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
在所有节点上执行以下命令,安装kubelet、kubeadm、kubectl:
# 添加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节点上执行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节点上执行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,需等待网络插件部署完成或检查节点网络配置。
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
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
kubectl proxy启动代理,然后在浏览器中访问http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/,输入令牌登录。注意事项:
setenforce 0)并调整防火墙规则;