±à¼ÍƼö: |
±¾ÎÄÏò´ó¼Ò½éÉÜKops-cn,²½Öè3
ÐÞ¸ÄMakefile,µ÷Õû¸ºÔؾùºâÆ÷,µÇ¼K8s¼¯ÈºÖеĽڵã,Ï£Íû¶ÔÄúµÄѧϰÓÐËù°ïÖú¡£
±¾ÎÄÀ´×ÔÓÚcsdn£¬ÓÉ»ðÁú¹ûÈí¼þDelores±à¼¡¢ÍƼö¡£ |
|
1. ×¼±¸
1.1 ÍøÂç
´´½¨µ¯ÐÔIPÓÃÓÚK8SÍøÂçͳһµÄ³ö¿Ú


´´½¨VPC

¹«ÍøÓÃÓÚ±¤ÀÝ»ú¡¢VPN·þÎñÆ÷£¬Ë½ÓÐÍøÂçÓÃÓÚ²¿ÊðK8S·þÎñ¼¯Èº

ÉèÖÃһЩ±ØÒªµÄ²ÎÊý£¬´Ë´¦ÐèҪעÒâÉèÖøղŷÖÅäµÃµ½µÄNAT IP¡£

´´½¨Íê³ÉÖ®ºó×¢ÒâÒª¸øVPCÉÏ´òÉϱêÇ©Èà KubernetesÄܹ»Ê¶±ðºÍ¹ÜÀíµ½ÕâЩVPC
VPCÐèÒª´òÉϵıêÓÐ


È»ºó¼Ç¼Ï¸ÃVPCµÄID
vpc-0761a396fcb3a9ddd
½ÓÏÂÀ´µ½ ×ÓÍøÒ³Ãæ£¬´´½¨×ÓÍø£ºvpcÑ¡Ôñ¸Õ²Å´´½¨µÄVPC¡¢Ñ¡ÔñÒ»¸ö×ÓÍøµØÖ·¶Î£¬×¢ÒâÑ¡ÔñÒ»¸ö¿ÉÑ¡Çø¡£

ÓÃÏàͬµÄ·½Ê½´´½¨3¸öÕâÑùµÄ×ÓÍø£¬×¢Ò⣺ÿ¸ö×ÓÍø±ØÐëÒªÔÚ²»Í¬µÄ¿ÉÓÃÇøÖУ¨±£³Ö¸ß¿ÉÓã©

×ÓÍø´´½¨Íê³ÉÖ®ºóͬÑùµÄÐèҪΪ×ÓÍø¶¼´òÉϱêÇ©ÕâÑùµÄ²ÅÄÜÈÃKubernetesʶ±ðºÍ¹ÜÀíµ½¡£³ýÁËÉÏÃæÌá¼°µÄÄÇÁ½¸ö±êǩ֮Í⻹ÐèÔö¼ÓÁ½ÖÖÀàÐ͵ıêÇ©£¬ÕâÁ½ÖÖÀàÐ͵ıêÇ©Õë¶ÔÓÚ¹«ÓÐ×ÓÍøºÍ˽ÓÐ×ÓÍøÉèÖá£

Òò´ËÎÒÃÇΪ¸Õ²Å´´½¨µÄ¹«ÓÐ×ÓÍøÔö¼ÓÉÏKubernetesCluster¡¢kubernetes.io/cluster/cluster.unisign.k8s.localºÍkubernetes.io/role/elbµÄ±êÇ©¡£

ΪÈý¸ö˽ÓÐ×ÓÍø¶¼Ôö¼ÓÉÏKubernetesCluster¡¢kubernetes.io/cluster/cluster.unisign.k8s.localºÍkubernetes.io/role/internal-elbµÄ±êÇ©¡£

´´½¨Íê³Éºó¼Ç¼ÏÂÕâÈý¸ö˽ÓÐ×ÓÍøµÄID£¬ÔÚKopsÅäÖÃÖн«Ê¹Óõ½
subnet-0efb59b551dd47dc2
subnet-0a4fa7de20bf500ef
subnet-0ba68ae43a6d71da0
1.2 ´æ´¢Í°
´´½¨Ò»¸öS3£¬Õâ¸ö´æ´¢Í°ÓÃÓÚ·ÅÖÃK8sµÄÅäÖÃÐÅÏ¢¡£

±£³ÖĬÈÏÉèÖÃÖ±½Ó´´½¨¾Í¿ÉÒÔ

´´½¨Íê³Éºó¼Ç¼Ï¸ÃͰµÄÃû³Æ£¨k8s-storage£©¾Í¿ÉÒÔ¡£
1.3 ÃÜÔ¿
´´½¨Ò»¸öÓÃÓڵǼaws cliµÄAK¡¢SK
Îҵݲȫƾ֤

´´½¨·ÃÎÊÃÜÔ¿

¼Ç¼ÏÂAKºÍSKÔÚʹÓÃKOPSʱÐèҪʹÓõ½
´´½¨Ò»¸öK8S¼¯ÈºµÇ¼ʹÓõÄרÓÃÃÜÔ¿¶Ô
µ½EC2Ò³Ãæ µÄÍøÂçÓ밲ȫ Ï嵀 ÃÜÔ¿¶Ô

ÊäÈëÃÜÔ¿¶ÔÃû³Æ£¬´´½¨ÃÜÔ¿¶Ô

´´½¨Íê³Éºó»á×Ô¶¯ÏÂÔØÃÜÔ¿¶Ô£¬ÇëÍ×ÉÆ±£¹Ü¸ÃpemÎļþ£¬Ò»»á½«»áÓõ½¡£
1.4 ±¤ÀÝ»ú
µ½EC2Ï´´½¨Ò»¸öʵÀý Amazon Linux 2 AMI (HVM), SSD Volume Type

×¢ÒâÅäÖÃһϣ¬·ÖÅäÍøÂçΪ¸Õ²Å´´½¨µÄVPCºÍ¹«ÓÐ×ÓÍø£¬²¢ÇÒ·ÖÅ乫ÓÐIP

´´½¨Íê³ÉÖ®ºóʹÓõǼµ½Õą̂±¤ÀÝ»úÉÏ£¬½ÓÏÂÀ´ÐèÒªÉÏ´«¸Õ²ÅµÃµ½µÄpemÃÜÔ¿¶ÔÎļþ¡£
½«K8sSSH.pemÒÆ¶¯µ½/home/ec2-user/.sshĿ¼Ï£¬È»ºóÉú³É¹«Ô¿
chmod 600 ~/.ssh/K8sSSH.pem
ssh-keygen -f ~/.ssh/K8sSSH.pem -y > ~/.ssh/K8sSSH.pub
chmod 600 ~/.ssh/K8sSSH.pub
chmod 400 ~/.ssh/K8sSSH.pem |
×¢Ò⣺ÔڵǼK8s¼¯ÈºÖеĽڵãʱ£¬»¹ÐèÒª½«~/.ssh/K8sSSH.pem ȨÏÞ¸ÄΪ 400£¬·ñÔò»áÒýÆðȨÏÞ´íÎó¶øµÇ¼²»Á˵ÄÎÊÌâ¡£
ÅäÖÃAWS Cli£¬Ê¹Óøղŵõ½µÄAKºÍSK£¬ÌîÈ뼯ȺËùÔÚµÄÇøÓò£¨ÄþÏľÍÊÇcn-northwest-1£©

Default output format ±£³ÖĬÈÏ£¬¿ÉÉèÖÃΪjson»òÕß table
µ½ÕâÀï×¼±¸µÄ²Ù×÷»ù±¾Íê³É
2. Kops-cn
°´ÕÕ Kops-cn README ²½Ö裺 1¡¢2¡¢3 ²Ù×÷
2.1 ²½Öè3 ÐÞ¸ÄMakefile
KOPS_STATE_STORE ´Ë´¦·ÅÖà s3:// + ´æ´¢Í°µÄÃû³Æ¡£ÀýÈ磺s3://k8s-storage
TARGET_REGION ¾ÍÊDz¿ÊðµÄÇøÓòÄþÏľÍÊÇcn-northwest-1
CUSTOM_CLUSTER_NAME ¾ÍÊǼ¯ÈºµÄÃû³Æ£¬¸ñʽΪ cluster.Ãû×Ö.k8s.local Èç¹û²»°´ÕÕÕâÖÖ¸ñʽÉèÖûᵼÖ Route53 host not found µÄ´íÎóŶ
ΪÁ˽«K8s²¿Ê𵽸ղŴ´½¨µÄ˽ÓÐÍøÂçÖУ¬ÐèÒªµ÷ÕûһЩÅäÖã¬ÖØÐ±à¼MakefileÎļþ¡£
ÉèÖÃTARGET_REGION¿ÉÓÃÇø
ÉèÖÃKOPS_STATE_STORE s3´æ´¢
ÉèÖÃVPCID VPC ID
ÉèÖÃSSH_PUBLIC_KEYÃÜÔ¿£¬Õâ¸ö¾ÍÊǸղÅÉú³É ~/.ssh/K8sSSH.pub
Ôö¼Ó±äÁ¿SUBNET_IDS ÓÃÓڼǼ˽ÓÐ×ÓÍøµÄID£¬Õâ¸ö±äÁ¿¾Í·Å¸Õ²ÅµÃµ½µÄÈý¸ö×ÓÍøµÄID£¬Óá°,¡±¸ô¿ª¡£
Ôö¼Ó±äÁ¿CUSTOM_CLUSTER_NAMEÓÃÓÚ×Ô¶¨Ò弯ȺÃû³Æ¡£
ÐÞ¸Ä.PHONY: create-cluster£¬ÔÚÖ¸ÁîµÄ×îºóÔö¼ÓÉÏÏÂÃæ¼¸¸ö²ÎÊý
--utility-subnets=$(SUBNET_IDS)
\
--api-loadbalancer-type=internal \
--subnets=$(SUBNET_IDS) \
--topology=private |
×îÖÕµÄÅäÖÃÎļþÈçÏ£º
TARGET_REGION
?= cn-northwest-1
AWS_PROFILE ?= default
KOPS_STATE_STORE ?= s3://k8s-storage
VPCID ?= vpc-0761a396fcb3a9ddd
MASTER_COUNT ?= 3
MASTER_SIZE ?= m4.large
NODE_SIZE ?= c5.large
NODE_COUNT ?= 2
SSH_PUBLIC_KEY ?= ~/.ssh/K8sSSH.pub
KUBERNETES_VERSION ?= v1.13.10
KOPS_VERSION ?= 1.13.0
SUBNET_IDS ?= subnet-0efb59b551dd47dc2, subnet-0a4fa7de20bf500ef,subnet-0ba68ae43a6d71da0
CUSTOM_CLUSTER_NAME ?= cluster.unisign.k8s.local
# Ê¡ÂÔ...
.PHONY: create-cluster
create-cluster:
@KOPS_STATE_STORE=$(KOPS_STATE_STORE) \
AWS_PROFILE=$(AWS_PROFILE) \
AWS_REGION=$(AWS_REGION) \
AWS_DEFAULT_REGION=$(AWS_DEFAULT_REGION) \
kops create cluster \
--cloud=aws \
--name=$(CLUSTER_NAME) \
--image=$(AMI) \
--zones=$(ZONES) \
--master-count=$(MASTER_COUNT) \
--master-size=$(MASTER_SIZE) \
--node-count=$(NODE_COUNT) \
--node-size=$(NODE_SIZE) \
--vpc=$(VPCID) \
--kubernetes-version= $(KUBERNETES_VERSION_URI)
\
--networking=amazon-vpc-routed-eni \
--ssh-public-key=$(SSH_PUBLIC_KEY) \
--utility-subnets=$(SUBNET_IDS) \
--api-loadbalancer-type=internal \
--subnets=$(SUBNET_IDS) \
--topology=private |
¼ÌÐø°´ÕÕKops-cn README ²½Öè 4¡¢5¡¢6²Ù×÷
µÈ´ý¼¯ÈºÅäÖô´½¨Íê³É

2.2 µ÷Õû¸ºÔؾùºâÆ÷
×¢Ò⣺ ʹÓÃkopsÆô¶¯µÄkubernetesµÄapiserver ÊÇÔËÐÐÔÚ 443¶Ë¿ÚÉÏ£¬¶ø²»ÊÇ6443
ÓÉÓÚÖйúÇø 80 ºÍ 433 ¶Ë¿ÚµÄʹÓÃÊÇÐèÒª±¸°¸µÄ£¬ËùÒÔ´Ë´¦ÎÒÃÇÐèÒªµ÷Õû¸ºÔؾùºâ¶Ë¿Úµ½·Ç433£¬·ñÔòÑéÖ¤¼¯Èº»áʧ°Ü
µ½EC2Ò³ÃæÑ¡Ôñ ¸ºÔؾùºâÆ÷£¬ÕÒµ½Ãû×ÖΪapi-cluster-unisign**µÄ¸ºÔؾùºâÆ÷

±à¼¸ºÔؾùºâµÄ¶Ë¿Ú

½« ¸ºÔؾùºâÆ÷¶Ë¿ÚÓÉ443¸ÄΪ8443


ÔÚÃèÊöÖеã»÷°²È«×éµÄ ×éÃû³Æ

Ñ¡Ôñ api-elb.cluster.** È»ºóÔÚ±à¼ÈëÕ¾¹æÔò

ÓÉ HTTPS¸ÄΪ ×Ô¶¨ÒåTCPµÄ8443¶Ë¿Ú

½ÓÏÂÀ´»Øµ½±¤ÀÝ»úÉÏ£¬±à¼kubectl µÄÅäÖÃÎļþ
Ð޸İ¡clusters.cluster.server£¬ÔÚĩβ¼ÓÉÏ:8443

ÑéÖ¤¼¯ÈºÓÐЧÐÔ

¿ÉÒÔ¿´µ½¼¯ÈºÒѾÕý³£ÔËÐС£
3. µÇ¼K8s¼¯ÈºÖеĽڵã
ÓÉÓÚK8s¼¯Èº²¿Êðµ½VPCÖеÄ˽ÓÐÍøÂ磬ûÓй«ÍøIP£¬ËùÒÔÎÒÃÇÖ»ÄÜͨ¹ýÔÚVPCÖеĹ«ÓÐ×ÓÍøÖеķþÎñÆ÷¼ä½ÓµÄÁ¬½Óµ½K8s¼¯Èº·þÎñÆ÷¡£
Òò´ËÎÒÃǼÌÐøÊ¹ÓÃÉÏÃæ´´½¨µÄ±¤ÀÝ»ú½øÐвÙ×÷
´ÓEC2¿ØÖÆÌ¨»ñÈ¡µ½Ä³¸öK8s¼¯Èº½ÚµãµÄʵÀý˽ÓÐ×ÓÍøIP£¬ÍƼöÑ¡ÔñMaster½Úµã

ʹÓù«Ô¿SSHµÇ¼µ½½ÚµãÉÏ
ssh -i ~/.ssh/K8sSSH.pem
admin@10.0.201.12 |
Èç¹ûÌáʾÎÞȨÏÞÄÇôÇëÉèÖÃ˽ԿʹÓÃȨÏÞchmod 400 ~/.ssh/K8sSSH.pem
¿ÉÒÔ¿´µ½µÇ¼ÒѾ³É¹¦£º

Kops-cn ËùʹÓõľµÏñÊÇ»ùÓÚdebianµÄ£¬µÇ¼µÄÓû§²»ÊÇec2-user¶øÊÇadmin
4. µ÷Õû¼¯ÈºÖеĽڵãÊýÁ¿

KopsʹÓÃAutoscale×éµÄ·½Ê½À´´´½¨¼¯Èº£¬ËùÒÔ˵ÕâÀï±à¼µÄÊǹ¤×÷½ÚµãµÄµ¯ÐÔÉìËõÉèÖá£
Èç¹ûÖ»Êǵ÷Õû»ù´¡ÊýÁ¿»ù´¡½ÚµãµÄÊýÁ¿£¬ÄÇôµ÷Õû spec.minSize¾Í¿ÉÒÔ
´Ë´¦ÎÒÃǽ«2µ÷ÕûΪ3£¬maxSize´óÓÚµÈÓÚminSize£¬ËùÒÔÒ²µ÷ÕûmaxSizeΪ3¡£
±à¼ºÃÖ®ºó±£´æ£¬È»ºó¸üм¯Èº
´Ó¿ØÖÆÌ¨ÉÏ¿ÉÒÔ¿´µ½ÒѾÓÐÒ»¸öʵÀýÔÚÆô¶¯

¹ýÒ»»áÖ®ºóÎÒÃÇÑéÖ¤¼¯ÈºµÄÓÐЧ
ÔÚ³õʼ»¯Íê³ÉÖ®ºó¼¯ÈºÕý³£Æô¶¯

n. F&Q
¼¯ÈºÃ»ÓÐÆô¶¯Íê³É¾ÍÑéÖ¤
ÔÚÐÞ¸ÄÁ˸ºÔؾùºâÆ÷ºÍ°²È«×éÖ®ºóʹÓÃmake validate-cluster³öÏÖ
unexpected error
during validation:
error listing nodes: Get https://internal-api-cluster-unisign -k8s-l-1befqc-1231872735.cn-northwest-1.elb.amazonaws.com.cn:8443/api/v1/nodes:
dial tcp: lookup internal-api-cluster -unisign-k8s-l-1befqc-1231872735.cn -northwest-1.elb.amazonaws.com.cn
on 10.0.0.2:53: no such host
make: *** [validate-cluster] Error 1 |
»òÕßÊÇ
unexpected error
during validation:
error listing nodes: Get https://internal -api-cluster-unisign-k8s-l-1befqc -1231872735.cn-northwest-1. elb.amazonaws.com.cn :8443/api/v1/nodes:
EOF
make: *** [validate-cluster] Error 1 |
µÄ´íÎó£¬ÕâÊÇÒòΪ¿ØÖƽڵ㣨master£©»¹Ã»ÓÐÍê³ÉÆô¶¯£¬ËùÒÔÇëÄÍÐĵȺò¡£
|