下面我按从零到可运行的思路,给你一个Linux + Kubernetes(k8s)部署的实用指南,适合新手也适合生产参考。
# 关闭 swap
swapoff -a
sed -i '/swap/s/^/#/' /etc/fstab
# 关闭防火墙(测试环境)
systemctl stop firewalld
systemctl disable firewalld
# 设置主机名
hostnamectl set-hostname master
hostnamectl set-hostname node1
# 配置 hosts
cat >> /etc/hosts <<EOF
192.168.1.10 master
192.168.1.11 node1
EOF
yum install -y containerd
systemctl enable --now containerd
或 Docker:
yum install -y docker
systemctl enable --now docker
cat > /etc/yum.repos.d/kubernetes.repo <<EOF
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg
EOF
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet
kubeadm init \
--apiserver-advertise-address=192.168.1.10 \
--pod-network-cidr=10.244.0.0/16
成功后执行:
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
在 Master 初始化后会输出类似:
kubeadm join 192.168.1.10:6443 --token xxx --discovery-token-ca-cert-hash sha256:xxx
在 Node 上执行即可。
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
检查:
kubectl get nodes
kubectl get pods -n kube-system
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get svc
浏览器访问:
http://节点IP:NodePort
| 方式 | 适合场景 |
|---|---|
| kubeadm | 学习 / 中小集群 |
| k3s | 边缘 / 单机 |
| Rancher | 多集群管理 |
| 云厂商托管 | 生产首选 |
如果你愿意,我可以:
你现在是 学习用还是生产用?几台机器?