准备工作
在开始之前,确保您已经具备以下条件:
一台或多台运行Ubuntu 16.04或更高版本的服务器(建议使用虚拟机)
所有服务器之间的网络互通
每台服务器至少2GB的可用内存
安装Docker
Kubernetes需要使用Docker来管理容器,因此需要先安装Docker。
在每台服务器上执行以下命令:
sudo apt-get update
sudo apt-get 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-get update
sudo apt-get install -y docker-ce
安装完成后,运行以下命令将Docker添加到开机启动项:
sudo systemctl enable docker
安装Kubernetes
在每台服务器上执行以下命令:
sudo apt-get update && sudo apt-get 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-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
初始化Master节点
选择一台服务器作为Master节点,执行以下命令:
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
执行完后,将会输出一段类似于以下的信息:
kubeadm join 192.168.0.100:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
请将上述信息保存下来,以备后用。
配置Kubectl
在Master节点上执行以下命令:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
安装网络插件
在Master节点上执行以下命令,安装Flannel网络插件:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
加入Worker节点
在Worker节点上执行第4步中输出的命令,将Worker节点加入集群。
验证集群状态
在Master节点上执行以下命令,验证集群状态:
kubectl get nodes
如果输出类似于以下的信息,则表示集群搭建成功:
NAME STATUS ROLES AGE VERSION
k8s-master Ready master 1d v1.18.2
k8s-worker-1 Ready <none> 1d v1.18.2
k8s-worker-2 Ready <none> 1d v1.18.2
部署应用
现在您已经成功搭建了Kubernetes集群,可以开始部署应用了。可以使用Kubernetes的Deployment和Service来部署和暴露应用。
例如,可以创建一个Deployment来运行一个Nginx容器:
kubectl create deployment nginx --image=nginx
然后,可以创建一个Service来暴露这个Deployment:
kubectl expose deployment nginx --port=80 --type=NodePort
执行完后,可以通过NodePort类型的Service的端口访问Nginx应用。
使用Helm管理应用
使用Helm可以更方便地管理Kubernetes应用的部署和升级。可以使用以下命令安装Helm:
curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get-helm-3 | bash
然后,可以使用Helm来部署应用,例如:
helm install myapp ./myapp-chart
其中,myapp-chart是应用的Helm chart文件。