> 文章列表 > 五、手把手搭建K8S保姆级教程

五、手把手搭建K8S保姆级教程

五、手把手搭建K8S保姆级教程

准备工作
在开始之前,确保您已经具备以下条件:

一台或多台运行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文件。