Kubernetes 是一个开源的容器编排系统,可以帮助用户自动管理多个容器化应用程序。本文将介绍如何在 CentOS 服务器上部署 Kubernetes 集群。
环境准备
1. 安装 Docker
在所有的节点上安装 Docker。
sudo yum install -y docker
sudo systemctl start docker
sudo systemctl enable docker
2. 安装 kubeadm
在所有的节点上安装 kubeadm、kubelet 和 kubectl。
sudo tee /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 https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
sudo yum install -y kubelet kubeadm kubectl
sudo systemctl start kubelet
sudo systemctl enable kubelet
3. 关闭 swap 分区
Kubernetes 不支持使用 swap 分区,因此需要关闭 swap。
sudo swapoff -a
sudo sed -i '/swap/d' /etc/fstab
初始化 Kubernetes 主节点
在主节点上初始化 Kubernetes 集群。
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
命令执行后会输出类似下面的信息:
Your Kubernetes control-plane has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 192.168.0.10:6443 --token abcdef.1234567890abcdef \
--discovery-token-ca-cert-hash sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
将 sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
命令的输出复制下来,然后在本地机器上执行。
ssh user@master_ip sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
然后在本地机器上安装 Pod 网络插件。
kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml
主节点初始化完成后,可以使用以下命令查看状态:
kubectl get nodes
加入 Kubernetes 工作节点
在需要添加为工作节点的服务器上执行以下命令:
sudo kubeadm join 192.168.0.10:6443 --token abcdef.1234567890abcdef \
--discovery-token-ca-cert-hash sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
其中 192.168.0.10
是主节点的 IP 地址,在主节点初始化时已经输出了加入命令的详细信息。
工作节点加入后,可以使用以下命令查看状态:
kubectl get nodes
部署应用程序
现在 Kubernetes 集群已经准备好了,可以开始部署应用程序。下面是一个简单的 Nginx 示例:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort