在Linux系统上安装Kubernetes的详细步骤
kubeadm(集群初始化)、kubelet(节点代理)、kubectl(集群管理)。sudo swapoff -a,并注释/etc/fstab中的swap行;setenforce 0(临时)或修改/etc/selinux/config(永久);systemctl stop firewalld(CentOS)、ufw disable(Ubuntu);hostnamectl set-hostname <节点名>,并在/etc/hosts中添加节点IP与主机名映射(如192.168.1.100 k8smaster)。Docker是Kubernetes默认的容器运行时,需先安装:
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update
sudo apt install -y docker-ce
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
sudo systemctl start docker
sudo systemctl enable docker
sudo docker run hello-world
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 # 锁定版本,避免自动升级
sudo yum install -y epel-release
sudo yum update -y
sudo yum install -y kubelet kubeadm kubectl
sudo systemctl enable kubelet && sudo systemctl start kubelet
在Master节点执行以下命令初始化集群(以Flannel网络插件为例):
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
--pod-network-cidr指定Pod网络的CIDR范围,需与后续网络插件兼容。kubeadm join命令(包含token和CA证书哈希),用于将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 get nodes
此时应显示Master节点状态为NotReady(需等待网络插件部署后变为Ready)。Kubernetes需要网络插件实现Pod间通信,常用Flannel:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl get pods -n kube-system
所有Pod应处于Running状态。在Worker节点执行Master节点输出的kubeadm join命令(替换<token>和<sha256>):
sudo kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
kubectl get nodes,应显示Worker节点状态为Ready。若需快速部署单节点Kubernetes(适合测试),可使用microk8s(仅支持Ubuntu):
sudo snap install microk8s --classic
microk8s enable dashboard dns registry
microk8s status
microk8s kubectl get nodes