Amazon EKS가 왔습니다.
14779 단어 도커kuberneteseksAWS
현시점에서는 오레곤(us-west-2)과 버지니아(us-east-1)에서 사용할 수 있습니다.
매니지먼트 컨소룰에
EKS
의 문자가!클릭하면
작성 도중? ?
절차
Getting Started를 보면서 만들어 보았습니다.
htps : // / cs. 아 ws. 아마존. 이 m / 그럼 _ jp / 에 ks / ㅁ st / 우세 r 구이로 / 껄껄 g-s r d. HTML
IAM 역할 만들기
먼저 EKS용 IAM 롤을 만듭니다.
역할 만들기 화면에서 EKS
를 선택합니다.
우선 정책은 지정한 채로
적당히 이름 붙여 작성.
CloudFormation에서 VPC 만들기
Getting Started에서는 CFn의 템플리로 VPC 만들 수 있다는 것이므로・・・
템플릿 URL은 여기
https://amazon-eks.s3-us-west-2.amazonaws.com/1.10.3/2018-06-05/amazon-eks-vpc-sample.yaml
CFn 화면에서 템플릿 URL을 지정하고,
CIDR 지정하여,
만들기.
어서 오세요 3 서브넷의 VPC였습니다.
로컬 환경 설정
https://amazon-eks.s3-us-west-2.amazonaws.com/1.10.3/2018-06-05/amazon-eks-vpc-sample.yaml
EKS 용 kubectl이있는 것 같습니다.
$ curl -o kubectl https://amazon-eks.s3-us-west-2.amazonaws.com/1.10.3/2018-06-05/bin/darwin/amd64/kubectl
$ chmod +x ./kubectl
$ ./kubectl version --short --client
Client Version: v1.10.3
인증에 사용하는 것 같습니다.
$ curl -o heptio-authenticator-aws https://amazon-eks.s3-us-west-2.amazonaws.com/1.10.3/2018-06-05/bin/darwin/amd64/heptio-authenticator-aws
$ chmod +x ./heptio-authenticator-aws
$ ./heptio-authenticator-aws help
A tool to authenticate to Kubernetes using AWS IAM credentials
Usage:
heptio-authenticator-aws [command]
Available Commands:
help Help about any command
init Pre-generate certificate, private key, and kubeconfig files for the server.
server Run a webhook validation server suitable that validates tokens using AWS IAM
token Authenticate using AWS IAM and get token for Kubernetes
verify Verify a token for debugging purpose
1.15.32 이상 필요
$ sudo pip install --upgrade awscli
Cluster 만들기
aws-cli
로 하는 것이 좋을 것 같습니다.이유는 모르겠지만 관리 콘솔에서 만들면 kubectl 연결로 인증에 오류가 발생했습니다.
$ ./kubectl get all
error: the server doesn't have a resource type "cronjobs"
$ ./kubectl get node
error: You must be logged in to the server (Unauthorized)
작성 명령은 이런 느낌입니다.
$ aws eks create-cluster --name test --role-arn arn:aws:iam::XXXXXXXXXXX:role/EKS-Role --resources-vpc-config subnetIds=subnet-XXXXXX,subnet-XXXXXXX,securityGroupIds=XXXXXX --region us-east-1
{
"cluster": {
"status": "CREATING",
"name": "test",
"certificateAuthority": {},
"roleArn": "arn:aws:iam::XXXXXXXXX:role/EKS-Role",
"resourcesVpcConfig": {
"subnetIds": [
"subnet-XXXXXXX",
"subnet-XXXXXXX"
],
"vpcId": "vpc-XXXXXXXX",
"securityGroupIds": [
"sg-XXXXXX"
]
},
"version": "1.10",
"arn": "arn:aws:eks:us-east-1:XXXXXXXXXXXX:cluster/test",
"createdAt": 1528253503.404
}
}
CFn으로 만든 SubnetID, SG를 지정하고 있습니다.
버지니아에서는 1b의 서브넷을 포함하면 ↓의 에러가 나왔으므로, 제외하고 있습니다.
An error occurred (UnsupportedAvailabilityZoneException) when calling the CreateCluster operation: Cannot create cluster 'test' because us-east-1b, the targeted availability zone, does not currently have sufficient capacity to support the cluster. Retry and choose from these availability zones: us-east-1a, us-east-1c, us-east-1d
오레곤에서는 문제 없을 것 같았습니다.
STATUS가
ACTIVE
가 될 때까지 기다립니다. (15~20분 정도・・・)kubectl로 연결
config 파일을 만듭니다.
서버 엔드포인트, 인증서 정보 및 클러스터 이름을 수정합니다.
eks-config
apiVersion: v1
clusters:
- cluster:
server: (サーバーエンドポイント、DESCRIBE_CLUSTER_CONTAINER_LABEL_API_SERVER_ENDPOINTの部分)
certificate-authority-data: (証明書情報、DESCRIBE_CLUSTER_CONTAINER_LABEL_CERTIFICATE_AUTHORITYの部分)
name: kubernetes
contexts:
- context:
cluster: kubernetes
user: aws
name: aws
current-context: aws
kind: Config
preferences: {}
users:
- name: aws
user:
exec:
apiVersion: client.authentication.k8s.io/v1alpha1
command: ./heptio-authenticator-aws
args:
- "token"
- "-i"
- "(クラスタ名)"
KUBECONFIG를 설정합니다.
$ export KUBECONFIG=./eks-config
연결!
$./kubectl get all [12:04:13]
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 6m
할 수 있었습니다.
Worker 노드 만들기
CFn의 템플리가 준비되어 있으므로 이것을 사용합니다.
URL은 이쪽.
https://amazon-eks.s3-us-west-2.amazonaws.com/1.10.3/2018-06-05/amazon-eks-nodegroup.yaml
AMI는 EKS용 AMI가 있는 것 같습니다.
이 설정은 AZ당 하나씩 인스턴스를 만듭니다.
ConfigMap
에서 Node를 Join시킵니다.표본이 있기 때문에,
$ curl -O https://amazon-eks.s3-us-west-2.amazonaws.com/1.10.3/2018-06-05/aws-auth-cm.yaml
rolearn
의 부분을 CFn으로 작성된 NodeInstanceRole
의 ARN으로 수정합니다.aws-auth-cm.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: aws-auth
namespace: kube-system
data:
mapRoles: |
- rolearn: arn:aws:iam::XXXXXXXX:role/test-worker-nodes-NodeInstanceRole-XXXXXXXXX
username: system:node:{{EC2PrivateDNSName}}
groups:
- system:bootstrappers
- system:nodes
Apply합니다.
$ ./kubectl apply -f aws-auth-cm.yaml
configmap "aws-auth" created
$ ./kubectl get nodes
NAME STATUS ROLES AGE VERSION
ip-192-168-121-147.ec2.internal Ready <none> 52s v1.10.3
ip-192-168-182-144.ec2.internal Ready <none> 55s v1.10.3
ip-192-168-235-51.ec2.internal Ready <none> 53s v1.10.3
등록되었습니다!
배포
그리고는, k8s의 세계이므로 좋아하게.
우선 샘플 GuestBook을 배포해 보겠습니다.
$ ./kubectl apply -f https://raw.githubusercontent.com/kubernetes/kubernetes/v1.10.3/examples/guestbook-go/redis-master-controller.json
replicationcontroller "redis-master" created
$ ./kubectl apply -f https://raw.githubusercontent.com/kubernetes/kubernetes/v1.10.3/examples/guestbook-go/redis-master-service.json
service "redis-master" created
$ ./kubectl apply -f https://raw.githubusercontent.com/kubernetes/kubernetes/v1.10.3/examples/guestbook-go/redis-slave-controller.json
replicationcontroller "redis-slave" created
$ ./kubectl apply -f https://raw.githubusercontent.com/kubernetes/kubernetes/v1.10.3/examples/guestbook-go/redis-slave-service.json
service "redis-slave" created
$ ./kubectl apply -f https://raw.githubusercontent.com/kubernetes/kubernetes/v1.10.3/examples/guestbook-go/guestbook-controller.json
replicationcontroller "guestbook" created
$ ./kubectl apply -f https://raw.githubusercontent.com/kubernetes/kubernetes/v1.10.3/examples/guestbook-go/guestbook-service.json
service "guestbook" created
$ ./kubectl get services -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
guestbook LoadBalancer 10.100.133.245 a22b8aa77693811e883521XXXXXXXXX-XXXXXXXXX.us-east-1.elb.amazonaws.com 3000:32551/TCP 5s app=guestbook
kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 18m <none>
redis-master ClusterIP 10.100.141.60 <none> 6379/TCP 39s app=redis,role=master
redis-slave ClusterIP 10.100.252.136 <none> 6379/TCP 20s app=redis,role=slave
ELB를 보면 CLB가 가능합니다.
브라우저로 액세스하면 ...
보였다.
요약
마침내 AWS에서 관리되는 k8s 환경을 구축할 수 있습니다.
그냥・・・
대단히 귀찮습니다 ...
아마도 도구 등이 충실해 온다고는 생각합니다만・・・
Reference
이 문제에 관하여(Amazon EKS가 왔습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/taishin/items/a32b4ac2c3f73cd02abb
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Amazon EKS가 왔습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/taishin/items/a32b4ac2c3f73cd02abb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)