使用kubeadm在具有Ubuntu的AWS EC2实例上设置Kubernetes集群
使用kubeadm在具有Ubuntu的AWS EC2实例上设置Kubernetes集群
在本文中,我们将了解如何在Ubuntu 18.04 LTS服务器上设置具有2个工作节点和1个主节点的Kubernetes集群。我们将使用“ kubeadm”工具来设置集群。 Kubeadm是一个工具,用于提供用于创建Kubernetes集群的“kubeadminit”和“kubeadmjoin”。在继续创建集群之前,让我们简要地了解一些术语。
- 码头工人:
Docker是一个用于开发,交付和运行应用程序的开放平台。 Docker使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助Docker,您可以以与管理应用程序相同的方式来管理基础架构。 - 图片:
映像是一个只读模板,其中包含创建Docker容器的说明。通常,一个映像基于另一个映像,并进行一些其他自定义 - 容器:
容器是图像的可运行实例。您可以使用Docker API或CLI创建,启动,停止,移动或删除容器。您可以将容器连接到一个或多个网络,将存储连接到它,甚至根据其当前状态创建新映像。 - Kubernetes:
Kubernetes是一个开放源代码的容器编排系统,用于自动化应用程序的部署,扩展和管理。 - 节点:
节点代表集群中的单个计算机。 - 豆荚:
A是在同一主机上一起部署的一组容器。它是Kubernetes应用程序的基本执行单元。 - 部署:
部署运行应用程序的多个副本,并自动替换任何失败或无响应的实例。它提供Pods和ReplicaSets的声明式更新。 - 副本集:
它确保应该运行Pod的副本数量。它可以被认为是复制控制器的替代品。
- 复制控制器:
它是长时间运行的吊舱的主管。它将启动指定数量的称为副本的Pod,并确保它们始终保持运行状态。
- 服务:
它是一个抽象,定义了Pod的逻辑集和访问Pod的策略。
API Server,etcd,Controller Manager和Scheduler是Master和Docker的组件,Kubelet Service和Kubernetes Proxy Service是Worker Node的组件。我们将不在本文中讨论这些组件。如果您想了解这些组件,则可以在此处访问Kubernetes的官方页面。
先决条件
- 3台Ubuntu 18.04服务器,至少2 GB RAM和2 CPU。
- 每个服务器上具有“sudo”访问权限的系统用户。
我们要做什么
- 使用kubeadm设置Kubernetes集群
使用kubeadm设置Kubernetes集群
这里,
我们有3个Ubuntu 18.04 LTS服务器。
服务器1 =节点1
服务器2 =节点2
服务器3 =主服务器
在继续实际安装之前,让我们更改服务器的主机名。
您可以使用以下命令在每台服务器上设置主机名。在每台服务器上执行以下命令后,重新登录服务器,以便服务器将获得新的主机名。
sudo hostnamectl set-hostname "master"
sudo hostnamectl set-hostname "node1"
sudo hostnamectl set-hostname "node2"
请按照下面提到的步骤启动可工作的Kubernets集群。
获取Docker gpg密钥(在所有节点上执行以下命令):
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
添加Docker存储库(在所有节点上执行以下命令):
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu
$(lsb_release -cs)
stable"
获取Kubernetes gpg密钥(在所有节点上执行以下命令):
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
添加Kubernetes存储库(在所有节点上执行以下命令):
cat << EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
更新您的软件包(在所有节点上执行以下命令):
sudo apt-get update
安装Docker,kubelet,kubeadm和kubectl(在所有节点上执行以下命令):
sudo apt-get install -y docker-ce=18.06.1~ce~3-0~ubuntu kubelet=1.15.7-00 kubeadm=1.15.7-00 kubectl=1.15.7-00
保持它们为当前版本(在所有节点上执行以下命令):Advertisements.banner-1 {text-align:center; padding-top:10pximportant; padding-bottom:10pximportant; padding-left:0pximportant; padding-right:0pximportant; width:100%important; box-sizing:border-boximportant; background -color:#eeeeeeimportant; border:1px实心#dfdfdf}
sudo apt-mark hold docker-ce kubelet kubeadm kubectl
将iptables规则添加到sysctl.conf中(在所有节点上执行以下命令):
echo "net.bridge.bridge-nf-call-iptables=1" | sudo tee -a /etc/sysctl.conf
立即启用iptables(在所有节点上执行以下命令:
sudo sysctl -p
在Master上:Advertisements.large-leaderboard-2 {text-align:center; padding-top:10pximportant; padding-bottom:10pximportant; padding-left:0pximportant; padding-right:0pximportant; width:100%important; box-sizing:border-boximportant; background -color:#eeeeeeimportant; border:1px实心#dfdfdf}
初始化集群(仅在主节点上执行以下命令):
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
设置本地kubeconfig(仅在主节点上执行以下命令):
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
应用Flannel CNI网络覆盖(仅在主节点上执行以下命令):
sudo kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
在节点1和节点2上:
将工作节点加入集群(仅在Node1和Node2上执行以下命令):
sudo kubeadm join 172.31.4.161:6443 --token 0y52t6.ffsj8jkjfcl1sq8h
--discovery-token-ca-cert-hash sha256:7aa1825042d19d3e567f7e4b447634e942fe9ed7f18f78464a9c05f451551ed5
验证辅助节点已成功加入集群在主节点上执行以下命令):
kubectl get nodes
结论:
在本文中,我们学习了使用kubeadm工具设置Kubernetes集群。我们已经看到,如果不遗漏这些步骤并完成正确的安装,可以很容易地创建集群。