- 安装docker
# 安装必要的工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加Docker源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装Docker
sudo yum install docker-ce
# 启动Docker
sudo systemctl start docker
# 设置Docker开机自启
sudo systemctl enable docker
- 安装kubeadm、kubelet和kubectl
# 添加Kubernetes源
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
# 安装Kubernetes组件
sudo yum install -y kubelet kubeadm kubectl
# 启动kubelet服务
sudo systemctl start kubelet
# 设置kubelet自启动
sudo systemctl enable kubelet
- 部署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 <control-plane-host>:<control-plane-port> --token <token> --discovery-token-ca-cert-hash sha256:<hash>
按照输出的提示,执行以下命令:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
安装网络插件(这里以flannel为例):
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
等待一段时间,查看集群状态:
kubectl get nodes
kubectl get pods --all-namespaces
- 加入Kubernetes节点
在其他节点上执行以下命令,将其加入到Kubernetes集群中:
sudo kubeadm join <control-plane-host>:<control-plane-port> --token <token> --discovery-token-ca-cert-hash sha256:<hash>
其中<control-plane-host>
和<control-plane-port>
是初始化Kubernetes主节点时输出的信息。执行完成后,在初始化Kubernetes主节点的控制台上,将会看到新节点的加入信息。
至此,Kubernetes集群搭建完成。可以使用kubectl命令来管理集群,例如:
# 查看节点状态
kubectl get nodes
# 部署一个应用
kubectl create deployment nginx --image=nginx
# 暴露服务
kubectl expose deployment nginx --port=80 --type=NodePort
# 查看服务访问地址
minikube service nginx --url
# 删除应用和服务
kubectl delete deployment/nginx
kubectl delete service/nginx