Linux环境下Kubernetes部署步骤
swapoff -a临时关闭,编辑/etc/fstab文件删除或注释swap行永久关闭。systemctl stop firewalld && systemctl disable firewalld(CentOS);sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config && setenforce 0(CentOS)。/etc/hosts中添加集群节点IP与主机名映射(如192.168.1.10 master、192.168.1.11 node1),确保主机名解析一致。Kubernetes依赖容器运行时管理容器,常用Docker作为运行时(也可选择containerd):
sudo apt update && sudo apt install -y docker.io
sudo systemctl start docker && sudo systemctl enable docker
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io
sudo systemctl start docker && sudo systemctl enable docker
docker version(显示客户端与服务端版本信息即为成功)。安装kubeadm(集群初始化工具)、kubelet(节点代理)、kubectl(命令行工具):
sudo apt update && sudo apt install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb 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 apt-mark hold kubelet kubeadm kubectl # 锁定版本避免自动升级
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
sudo yum install -y kubelet-1.28.0 kubeadm-1.28.0 kubectl-1.28.0 # 指定版本(如1.28.0)
sudo systemctl enable kubelet && sudo systemctl start kubelet
kubeadm version、kubectl version --client(显示版本信息即为成功)。Master节点负责集群管理(调度、控制平面),执行以下命令初始化:
sudo kubeadm init \
--apiserver-advertise-address=<Master节点IP> \ # 指定Master节点IP
--pod-network-cidr=10.244.0.0/16 \ # 指定Pod网络CIDR(需与后续网络插件匹配)
--image-repository registry.aliyuncs.com/google_containers # 使用国内镜像加速
kubeadm join命令(用于将Worker节点加入集群,需保存);mkdir -p $HOME/.kube;sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config;sudo chown $(id -u):$(id -g) $HOME/.kube/config(配置kubectl访问集群权限)。Kubernetes需要网络插件实现Pod间通信,常用Calico(高性能、支持网络策略):
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
kubectl get pods -n kube-system(所有Pod状态应为Running)。Worker节点负责运行应用容器,将Master节点初始化输出的kubeadm join命令复制到Worker节点执行:
sudo kubeadm join <Master节点IP>:6443 \
--token <生成的Token> \
--discovery-token-ca-cert-hash sha256:<生成的Hash>
在Master节点上执行以下命令,确认集群状态正常:
kubectl get nodes # 查看节点状态(所有节点应为Ready)
kubectl get pods --all-namespaces # 查看所有命名空间的Pod状态(应为Running)
NotReady,需检查:Docker/Kubelet服务是否运行、网络插件是否部署成功、节点间网络是否通畅。Dashboard是Kubernetes的Web管理界面,方便可视化操作:
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 -d
kubectl proxy启动代理,然后在浏览器输入http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/,输入令牌登录。