如何使用kops创建Kubernetes群集

时间:2020-03-05 15:30:34  来源:igfitidea点击:

在本文中,我们将使用KOPS在Amazon Web服务上安装生产级Kubernetes集群。
对于本教程,我们假设我们有AWS帐户。
我们还需要安装kubectl,如果我们之前的任何kubernetes文章遵循了任何遵循它,我们可能已经拥有它。

如果没有,我们将在此提供安装步骤以及AWSCLI等其他依赖项。

安装Kubectl,KOP和AWSCLI二进制文件

让我们通过获取kubectll来启动游戏

curl -Lo kubectl https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl && chmod +x kubectl 
sudo mv kubectl /usr/local/bin/

接下来我们将获得kops二进制文件

wget https://github.com/kubernetes/kops/releases/download/1.7.0/kops-linux-amd64
chmod +x kops-linux-amd64
sudo mv kops-linux-amd64 /usr/local/bin/kops

接下来,我们需要使用pip,python的包管理器来安装awscli。
我们显然需要安装Python。

sudo pip install awscli

配置AWSCLI.

我们需要访问AWS帐户的访问键,以便使用AWSCLI。
我们可以参考如何创建根AWS Access Keys文档。

一旦你这样做,我们就可以移动到配置部分

aws configure

然后按如下方式工作

AWS Access Key ID [None]: youraccesskeyID
AWS Secret Access Key [None]: yourSecretAccessKey
Default region name [None]: us-west-2
Default output format [None]:

我们稍后需要稍后的键,因此我们需要将它们输出到Env变量。

export AWS_ACCESS_KEY_ID=youraccesskeyID
export AWS_SECRET_ACCESS_KEY=yourSecretAccessKey

我们还可以将这些行添加到~/。
Bashrc和运行源~/。
Bashrc命令让我们在重新启动中保持它。
但请注意,使用计算机的每个人都可以获得那些钥匙。

接下来让我们创建组和用户kops,并为其提供必需的权限,因此KOP可以在没有打嗝的情况下运行。

aws iam create-group --group-name kops
aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy/AmazonEC2FullAccess --group-name kops
aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy/AmazonRoute53FullAccess --group-name kops
aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess --group-name kops
aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy/IAMFullAccess --group-name kops
aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy/AmazonVPCFullAccess --group-name kops
aws iam create-user --user-name kops
aws iam add-user-to-group --user-name kops --group-name kops

最后,我们创建了KOP用户的访问密钥

aws iam create-access-key --user-name kops

我们可以随时查看IAM用户使用以下命令

aws iam list-users

创建群集

对于群集创建,我们需要添加更多的env变量。
姓名将是群集的名称,因为我们不会DNS设置,我们将使用基于Gossip的DNS,并且对于该群集名称需要以K8S结尾。
本地和之前你可以放弃任何东西。

export NAME=cluster.k8s.local

接下来,我们需要为群集创建AWS存储桶,并使一个变量将用于为州商店使用的kops。

aws s3api create-bucket --bucket ${NAME}-state
export KOPS_STATE_STORE=s3://cluster.k8s.local-state

接下来我们实际将创建群集。
我们将使用T2.
微实例因为它们是免费的符合条件的,如果我们注册了免费的层(如我),我们可以通过不需要费用。
否则,AWS将花费你一些钱。

kops create cluster \
 --name=${NAME} \
 --zones=us-west-2a \
 --master-size="t2.micro" \
 --node-size="t2.micro" \
 --node-count="3" \
 --ssh-public-key="~/.ssh/id_rsa.pub"

在此之后,我们将获取新群集的配置文件。

我们可以使用此命令编辑它。
它将使用默认编辑器,我们可以通过更改$编辑器变量来更改。

kops edit cluster ${NAME}

查看yaml文件后,我们可以使用此命令创建群集:

kops update cluster ${NAME} --yes

在此之后,你就在等待

以下命令可以显示群集准备后显示。

kops validate cluster

在初始化节点之前,我们可能必须执行几次。
这是我的群集在准备好时的样子。

部署某些应用程序

对于启动器,我们可以安装仪表板。

kubectl create -f https://git.io/kube-dashboard

我们可以使用以下命令使用仪表板:

kubectl proxy

接下来,我们将安装Good Old Sock Shop MicroServices演示。

kubectl apply -n sock-shop -f "https://github.com/microservices-demo/microservices-demo/blob/master/deploy/kubernetes/complete-demo.yaml?raw=true"
kubectl -n sock-shop get svc front-end

你会得到类似的东西

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
 front-end 100.66.88.111 <nodes> 80:30001/TCP 35m

在这种情况下,我们寻找的是Port 30001.
如果主服务器,我们需要将此端口与IP匹配。
需要在AWS安全组中允许对此端口的入站流量。

接下来,当我们从IP和端口形成URL时,我们应该得到袜子店。

使用群集完成后,可以使用此命令预览其删除:

kops delete cluster --name ${NAME}

实际上删除了这个:

kops delete cluster --name ${NAME} --yes

我不打算删除它,因为我们将在下一篇文章中使用kube提示。
有了这一点,我们在成功创建与KOPS的生产级kubernetes集群之后结束了本文。
KOPS代表Kubernetes操作,并且只要我们在AWS上部署,它肯定会使操作简单。