DaLei@home:~$

AWS EKS部署Kubernetes应用



本文中使用eksctl来部署Kubernetes的应用

准备

  • 安装并配置awscli
    # 使用aws信息登陆
    aws configure
    AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
    AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
    Default region name [None]: us-west-2
    Default output format [None]: json
  • 安装eksctl
    curl --silent --location "https://github.com/weaveworks/eksctl/releases/download/latest_release/eksctl_$(uname -s)\_amd64.tar.gz" | tar xz -C /tmp

    sudo mv /tmp/eksctl /usr/local/bin
    eksctl version
    # GitTag 版本应至少为 0.1.37
  • 下载并安装 kubectl

创建集群

    eksctl create cluster --name test-k8s --version 1.13 --nodegroup-name test-workers --node-type t3.medium --nodes 2 --nodes-min 1 --nodes-max 3 --node-ami auto

执行完成之会在这个位置创建文件:/Users/**/.kube/config

查看创建的集群,如下所示即创建成功

    kubectl get svc
    NAME             TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
    svc/kubernetes   ClusterIP   10.100.0.1   <none>        443/TCP   1m

部署自己的应用

以下内容都从Kubernetes-Deployment库拉取代码,并部署该应用

    # 部署redis server 服务
    cd redis-server/
    kubectl apply -f redis-master-deployment.yaml
    kubectl apply -f redis-master-service.yaml

    # mysql server 服务
    cd ../mysql-server/
    kubectl apply -f gp2-storage-class.yaml
    # 修改mysql-server-pvc.yaml 中的ReadWriteMany为ReadWriteOnce
    kubectl apply -f gp2-storage-class.yaml
    kubectl apply -f mysql-server-pvc.yaml
    kubectl apply -f mysql-server-secret.yaml
    sudo kubectl apply -f mysql-server-deployment.yaml
    kubectl apply -f mysql-server-service.yaml

    # 部署app应用
    cd ../app/
    # 修改type: NodePort 为type: LoadBalancer
    kubectl apply -f app-deployment.yaml
    kubectl apply -f app-service.yaml

等待一段时间后,就可以看到所有的pod和service都部署完成

    kubectl get pod
      ME                            READY   STATUS    RESTARTS   AGE
      app-69d7db5d6b-qd74z            1/1     Running   0          59m
      mysql-server-84f756bb5-d47db    1/1     Running   0          68m
      redis-master-6f855d55f8-rgqn8   1/1     Running   0          69m
    kubectl get service
      NAME           TYPE           CLUSTER-IP       EXTERNAL-IP                                                                   PORT(S)        AGE
      app            LoadBalancer   10.100.16.100    a56986b5ad69f11e98b10064a7947415-791164033.ap-southeast-1.elb.amazonaws.com   80:32670/TCP   59m
      kubernetes     ClusterIP      10.100.0.1       <none>                                                                        443/TCP        85m
      mysql-server   ClusterIP      10.100.116.200   <none>                                                                        3306/TCP       68m
      redis-master   ClusterIP      10.100.45.205    <none>                                                                        6379/TCP       69m

验证是否部署完成:

访问 http://a56986b5ad69f11e98b10064a7947415-791164033.ap-southeast-1.elb.amazonaws.com/api/test/system/

结果如图所示

表示部署成功。