Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
kubeadm ´î½¨ kubernetes ¼¯Èº
 
  4106  次浏览      27
 2018-3-7 
 
±à¼­ÍƼö:
±¾ÎÄÀ´×ÔÓÚ CC4.0£¬´Ó»·¾³´îÅäµ½¾µÏñÔÙµ½´î½¨¼¯Èº¼°ÆäËûÏà¹Ø£¬´úÂëʾÀýͼʾʾÀýÏêϸ˵Ã÷¡£

Ò»¡¢»·¾³×¼±¸

Ê×ÏÈ»·¾³»¹ÊÇÈý̨ÐéÄâ»ú£¬ÐéÄâ»úµØÖ·ÈçÏÂ

È»ºóÿ̨»úÆ÷°²×°ºÃ docker£¬ÖÁÓÚ rpm °²×°°ü°æ±¾ÏÂÃæ½éÉÜ

¶þ¡¢ËµµãÕý¾­ÊÂ

2.1¡¢°²×°°ü´ÓÄÄÀ´

¹Ù·½µÄÎĵµÒ³Ãæ¸üв¢²»¼°Ê±£¬Í¬Ê±ËûµÄ yum Ô´¸üÐÂÒ²ºÜÂý£¬ÔÙÕß¡­ÄÇËûÂè¿ÉÊÇ Google µÄ·þÎñÆ÷£¬ÄÜÌØÃ´Á¬ÉÏÂð£¿ÒÔǰ×ÜÊÇÔÚ¹úÍâ·þÎñÆ÷ʹÓà yumdownloader ÏÂÔØ£¬È»ºó scp µ½±¾µØ£¬ËäÈ»Äܽâ¾öÎÊÌ⣬µ«Êǵ°ËéÒ»µØ¡­×îºóÕÒµ½ÁËÔ´Í·£¬ÈçÏÂ

Kubernetes ±àÒëµÄ¸÷ÖÖ·¢Ðа氲װ°üÀ´Ô´ÓÚ Github ÉϵÄÁíÒ»¸ö½Ð release µÄÏîÄ¿£¬µØÖ· µãÕâÀ°ÑÕâ¸öÏîÄ¿ clone ÏÂÀ´£¬ÓÉÓÚ±¾ÈËÊÇ Centos Óû§£¬ËùÒÔ½øÈë rpm Ŀ¼£¬ÔÚ°²×°ºÃ docker µÄ»úÆ÷ÉÏÖ´ÐÐÄǸö docker-build.sh ½Å±¾¼´¿É±àÒë rpm °ü£¬×îºó»áÉú³Éµ½µ±Ç°Ä¿Â¼µÄ output Ŀ¼ÏÂ,½ØÍ¼ÈçÏÂ

2.2¡¢¾µÏñ´ÓÄÄÀ´

¶ÔµÄ£¬Ã»´í£¬gcr.io ¾ÍÊÇ Google µÄÓòÃû£¬·þÎñÆ÷¸ü²»ÓÃÌᣬËùÒÔÔÚ½øÐÐ kubeadm init ²Ù×÷ʱÈç¹û²»ÏȰÑÕâЩ¾µÏñ load ½øÈ¥¾ø¶Ô»á¿¨ËÀ²»¶¯£¬ÒÔÏÂÁгöÁËËùÐè¾µÏñ£¬µ«Êǰ汾ºÅ¸ù¾Ý rpm °æ±¾²»Í¬¿ÉÄÜÂÔÓв»Í¬£¬¾ßÌåÔõô¿´ÏÂÃæ½éÉÜ

ÕâЩ¾µÏñÓÐÁ½ÖÖ°ì·¨¿ÉÒÔ»ñÈ¡£¬µÚÒ»ÖÖÊÇÀûÓÃһ̨¹úÍâµÄ·þÎñÆ÷£¬ÔÚÉÏÃæ pull ÏÂÀ´£¬È»ºóÔÙ save ³É tar Îļþ£¬×îºó scp µ½±¾µØ load ½øÈ¥£»Ïà¶ÔÓÚµÚÒ»ÖÖ·½Ê½±È½Ï¿ÓµÄÊÇÈ¡¾öÓÚ·þÎñÆ÷ËÙ¶È£¬Ã¿´Î¸ãÆðÀ´Ò²ºÜµ°ÌÛ£¬µÚ¶þÖÖ·½Ê½¾ÍÊÇÀûÓà docker hub ×öÖÐת£¬¼òµ¥µÄ˵¾ÍÊÇÀûÓà docker hub µÄ×Ô¶¯¹¹½¨¹¦ÄÜ£¬ÔÚ Github Öд´½¨Ò»¸ö Dockerfile£¬ÀïÃæÖ»ÐèÒª FROM xxxx ÕâЩ gcr.io µÄ¾µÏñ¼´¿É£¬×îºó pull µ½±¾µØ£¬È»ºóÔÙ tag Ò»ÏÂ

Ê×ÏÈ´´½¨Ò»¸ö github ÏîÄ¿£¬¿ÉÒÔÖ±½Ó fork Îҵļ´¿É

ÆäÖÐÿ¸ö Dockerfile Ö»ÐèÒª FROM һϼ´¿É

×îºóÔÚ Docker Hub ÉÏ´´½¨×Ô¶¯¹¹½¨ÏîÄ¿

×îºóÒªÊÖ¶¯´¥·¢Ò»Ï£¬È»ºó Docker Hub ²Å»á¿ªÊ¼¸øÄã±àÒë

µÈ´ýÍê³É¼´¿ÉÖ±½Ó pull ÁË

2.3¡¢¾µÏñ°æ±¾ÔõôÕû

ÉÏÃæÒѾ­½â¾öÁ˾µÏñ»ñÈ¡ÎÊÌ⣬µ«ÊÇÒ»´óÐIJ¡¾ÍÊÇ ¡°ÎÒÌØÃ´Ôõô֪µÀÊÇÄĸö°æ±¾µÄ¡±£¬ÎªÁË·¢Ñï ¡°ÅÙ¸ùÎʵס± µÄ¾«Éñ£¬ÏȽøÐÐÒ»±é kubeadm init£¬Õâʱºò¾ø¶Ô¿¨ËÀ£¬´Ëʱ½øÈë /etc/kubernetes/manifests ¿ÉÒÔ¿´µ½Ðí¶à json Îļþ£¬ÕâЩÎļþÖж¨ÒåÁËÐèÒªÄÄЩ»ù´¡¾µÏñ

´ÓÉÏͼÖлù±¾¿ÉÒÔ¿´µ½ kubeadm init µÄʱºò»áÀ­È¡ÄÄЩ»ù´¡¾µÏñÁË£¬µ«ÊÇ»¹ÓÐһЩ¾µÏñ£¬ÈÔÈ»ÎÞ·¨ÕÒµ½£¬±ÈÈçkubedns¡¢pause µÈ£¬ÖÁÓÚÆäËûµÄ¾µÏñ°æ±¾£¬¿ÉÒÔ´ÓÔ´ÂëÖÐÕÒµ½£¬Ô´ÂëλÖÃÊÇ kubernetes/cmd/kubeadm/app/images/images.go Õâ¸öÎļþÖУ¬ÈçÏÂËùʾ:

Ê£ÓàµÄһЩ¾µÏñ£¬±ÈÈç kube-proxy-amd64¡¢kube-discovery-amd64 Á½¸ö¾µÏñ£¬ÆäÖÐ kube-discovery-amd64 ÏÖÔÚÒ»Ö±ÊÇ 1.0 °æ±¾£¬Ô´ÂëÈçÏÂËùʾ

kube-proxy-amd64 ÔòÊÇÒ»Ö±¸úËæ»ù´¡×é¼þµÄÖ÷°æ±¾£¬Ò²¾ÍÊÇ˵Èç¹û´Ó manifests Öп´µ½ controller µÈ°æ±¾ÊÇ v.1.4.4£¬ÄÇô kube-proxy-amd64 Ò²ÊÇÕâ¸ö°æ±¾£¬Ô´ÂëÈçÏÂ

×îºó¸ù¾ÝÕâЩ°æ±¾È¥ github ÉÏ×¼±¸ÏàÓ¦µÄ Dockerfile£¬ÔÚÀûÓà Docker Hub µÄ×Ô¶¯¹¹½¨ build һϣ¬ÔÙ pull ÏÂÀ´ tag ³É¶ÔÓ¦µÄ¾µÏñÃû³Æ¼´¿É

Èý¡¢´î½¨¼¯Èº

3.1¡¢Ö÷»úÃû´¦Àí

¾­¹ýÇײ⣬½ÚµãÖ÷»úÃû×îºÃΪ xxx.xxx ÕâÖÖÓòÃû¸ñʽ£¬·ñÔòÔÚijЩÇé¿öÏ£¬POD ÖÐÅܵijÌÐòʹÓÃÓòÃû½âÎöʱ¿ÉÄܳöÏÖÎÊÌ⣬ËùÒÔÏÈÒª´¦ÀíÒ»ÏÂÖ÷»úÃû

# дÈë hostname(node ½Úµãºó׺¸Ä³É .node)
echo "192-168-1-167.master" > /etc/hostname
# ¼ÓÈë hosts
echo "127.0.0.1 192-168-1-167.master" >> /etc/hosts
# ²»ÖØÆôÇé¿öÏÂʹÄÚºËÉúЧ
sysctl kernel.hostname=192-168-1-167.master
# ÑéÖ¤ÊÇ·ñÐ޸ijɹ¦
? ~ hostname
192-168-1-167.master

3.2¡¢load ¾µÏñ

ÓÉÓÚ±¾ÈËÒѾ­ÔÚ Docker Hub ÉÏ´¦ÀíºÃÁËÏà¹Ø¾µÏñ£¬ËùÒÔÖ±½Ó pull ÏÂÀ´ tag һϼ´¿É£¬

images=(kube-proxy-amd64:v1.4.4 kube-discovery-amd64:1.0 kubedns-amd64:1.7 kube-scheduler-amd64:v1.4.4 kube-controller-manager-amd64:v1.4.4 kube-apiserver-amd64:v1.4.4 etcd-amd64:2.2.5 kube-dnsmasq-amd64:1.3 exechealthz-amd64:1.1 pause-amd64:3.0 kubernetes-dashboard-amd64:v1.4.1)
for imageName in ${images[@]} ; do
docker pull mritd/$imageName
docker tag mritd/$imageName gcr.io/google_containers/$imageName
docker rmi mritd/$imageName
done

3.3¡¢°²×° rpm

rpm »ñÈ¡°ì·¨ÉÏÎÄÒѾ­Ìáµ½£¬¿ÉÒÔ×Ô¼º±àÒ룬ÕâÀïÎÒÒѾ­±àÒëºÃ²¢Î¬»¤ÁËÒ»¸ö yum Ô´£¬Ö±½Óyum install ¼´¿É(ÀÁ)

# Ìí¼Ó yum Ô´
tee /etc/yum.repos.d/mritd.repo << EOF
[mritdrepo]
name=Mritd Repository
baseurl=https://rpm.mritd.me/centos/7/x86_64
enabled=1
gpgcheck=1
gpgkey=https://mritd.b0.upaiyun.com/keys/rpm.public.key
EOF
# Ë¢ÐÂcache
yum makecache
# °²×°
yum install -y kubelet kubectl kubernetes-cni kubeadm

3.4¡¢³õʼ»¯ master

µÈ»áÓиö¿Ó£¬kubeadm µÈÏà¹Ø rpm °²×°ºó»áÉú³É /etc/kubernetes Ŀ¼£¬¶ø kubeadm init ʱºòÓÖ»á¼ì²âÕâЩĿ¼ÊÇ·ñ´æÔÚ£¬Èç¹û´æÔÚÔòÍ£Ö¹³õʼ»¯£¬ËùÒÔÒªÏÈÇåÀíһϣ¬ÒÔÏÂÇåÀí½Å±¾À´Ô´ÓÚ ¹Ù·½Îĵµ Tear down ²¿·Ö£¬¸Ã½Å±¾Í¬ÑùÊÊÓÃÓÚ³õʼ»¯Ê§°Ü½øÐÐÖØÖÃ

systemctl stop kubelet;
# ×¢Òâ: ÏÂÃæÕâÌõÃüÁî»á¸ÉµôËùÓÐÕýÔÚÔËÐÐµÄ docker ÈÝÆ÷£¬
# Èç¹ûÒª½øÐÐÖØÖòÙ×÷£¬×îºÃÏÈÈ·¶¨µ±Ç°ÔËÐеÄËùÓÐÈÝÆ÷¶¼Äܸɵô(¸Éµô²»Ó°ÏìÒµÎñ)£¬
# ·ñÔòµÄ»°×îºÃÊÖ¶¯É¾³ý kubeadm ´´½¨µÄÏà¹ØÈÝÆ÷(gcr.io Ïà¹ØµÄ)
docker rm -f -v $(docker ps -q);
find /var/lib/kubelet | xargs -n 1 findmnt -n -t tmpfs -o TARGET -T | uniq | xargs -r umount -v;
rm -r -f /etc/kubernetes /var/lib/kubelet /var/lib/etcd;

»¹Óиö¿Ó£¬³õʼ»¯ÒÔǰ¼ÇµÃÒ»¶¨ÒªÆô¶¯ kubelet£¬ËäÈ»Äã systemctl status kubelet ¿´×ÅËûÊÇÆô¶¯Ê§°Ü£¬µ«ÊÇÒ²µÃÆô¶¯£¬·ñÔò¾ø±Ú¿¨ËÀ

systemctl enable kubelet
systemctl start kubelet

µÈ»áµÈ»á£¬»¹Óпӣ¬Ð°汾ֱ½Ó init »áÌáʾ ebtables not found in system path ´íÎó£¬ËùÒÔ»¹µÃÏȰ²×°Ò»ÏÂÕâ¸ö°üÔÚ³õʼ»¯

# °²×° ebtables
yum install -y ebtables

×îºó¼ûÖ¤Ææ¼£µÄʱ¿Ì

# ³õʼ»¯²¢Ö¸¶¨ apiserver ¼àÌýµØÖ·
kubeadm init --api-advertise-addresses 192.168.1.167

 

ÍêÃÀ½ØÍ¼ÈçÏÂ

ÕâÀïÔÙ±¬ÁÏÒ»¸ö¿Ó£¬µ×Ï嵀 kubeadm join --token=b17964.5d8a3c14e99cf6aa 192.168.1.167 ÕâÌõÃüÁîÒ»¶¨±£´æºÃ£¬ÒòΪºóÆÚû·¨ÖØÏֵģ¬ÄãÃÇÀÏ´óÔÙÈÃÄãÌí¼Ó»úÆ÷µÄʱºòÈç¹ûûÕâ¸öÄã»á¿ÞµÄ

3.5¡¢¼ÓÈë node

ÉÏÃæËùÓпӴóԼ˵µÄ²î²»¶àÁË£¬Ö±½ÓÉÏÃüÁîÁË

# ´¦ÀíÖ÷»úÃû
echo "192-168-1-189.node" > /etc/hostname
echo "127.0.0.1 192-168-1-189.node" >> /etc/hosts
sysctl kernel.hostname=192-168-1-189.node
# À­È¡¾µÏñ
images=(kube-proxy-amd64:v1.4.4 kube-discovery-amd64:1.0 kubedns-amd64:1.7 kube-scheduler-amd64:v1.4.4 kube-controller-manager-amd64:v1.4.4 kube-apiserver-amd64:v1.4.4 etcd-amd64:2.2.5 kube-dnsmasq-amd64:1.3 exechealthz-amd64:1.1 pause-amd64:3.0 kubernetes-dashboard-amd64:v1.4.1)
for imageName in ${images[@]} ; do
docker pull mritd/$imageName
docker tag mritd/$imageName gcr.io/google_containers/$imageName
docker rmi mritd/$imageName
done
# ×° rpm
tee /etc/yum.repos.d/mritd.repo << EOF
[mritdrepo]
name=Mritd Repository
baseurl=https://rpm.mritd.me/centos/7/x86_64
enabled=1
gpgcheck=1
gpgkey=https://mritd.b0.upaiyun.com/keys/rpm.public.key
EOF
yum makecache
yum install -y kubelet kubectl kubernetes-cni kubeadm ebtables
# ÇåÀíĿ¼(û³õʼ»¯¹ýÖ»ÐèҪɾĿ¼)
rm -r -f /etc/kubernetes /var/lib/kubelet /var/lib/etcd;
# Æô¶¯ kubelet
systemctl enable kubelet
systemctl start kubelet
# ³õʼ»¯¼ÓÈ뼯Ⱥ
kubeadm join --token=b17964.5d8a3c14e99cf6aa 192.168.1.167

ͬÑùÍêÃÀ½ØÍ¼

3.6¡¢²¿Êð weave ÍøÂç

ÔÙû²¿Êð weave ʱ£¬dns ÊÇÆô¶¯²»Á˵ģ¬ÈçÏÂ

¹Ù·½¸ø³öµÄÃüÁîÊÇÕâÑùµÄ

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

±¾×Å ¡°ÅÙ¸ùÎʵ×ÍÚ׿·Ø¡± µÄ¾«Éñ£¬ÏȰÑÕâ¸ö yaml ¸ãÏÂÀ´

wget https://git.io/weave-kube -O weave-kube.yaml

È»ºóͬÑùµÄÌ×·£¬´ò¿ª¿´Ò»Ï¾µÏñ£¬ÀûÓà Docker Hub ×öÖÐת£¬¸ãÏÂÀ´ÔÙ load ½øÈ¥£¬È»ºó create -f ¾ÍÐÐÁË

docker pull mritd/weave-kube:1.7.2
docker tag mritd/weave-kube:1.7.2 weaveworks/weave-kube:1.7.2
docker rmi mritd/weave-kube:1.7.2
kubectl create -f weave-kube.yaml

ÍêÃÀ½ØÍ¼

3.7¡¢²¿Êð dashboard

dashboard µÄÃüÁîÒ²¸ú weave µÄÒ»Ñù£¬²»¹ýÓиö´ó¿Ó£¬Ä¬È쵀 yaml ÎļþÖжÔÓÚ image À­È¡²ßÂԵ͍ÒåÊÇ ÎÞÂÛºÎʱ¶¼»áÈ¥À­È¡¾µÏñ£¬µ¼Ö¼´Ê¹Äã load ½øÈ¥Ò²ÎÞÂÑÓã¬ËùÒÔ»¹µÃÏ顄 yaml ¸ãÏÂÀ´È»ºó¸ÄһϾµÏñÀ­È¡²ßÂÔ£¬×îºóÔÙ create -f ¼´¿É

wget https://rawgit.com/kubernetes /dashboard/master/src/ deploy/kubernetes-dashboard.yaml -O kubernetes-dashboard.yaml

±à¼­ yaml ¸ÄһϠimagePullPolicy£¬°Ñ Always ¸Ä³É IfNotPresent(±¾µØÃ»ÓÐÔÙÈ¥À­È¡) »òÕß Never(´Ó²»È¥À­È¡) ¼´¿É

×îºóÔÙÀûÓà Dokcer Hub ÖÐת£¬È»ºó´´½¨(ʵ¼ÊÉÏ dashboard ÒѾ­ÓÐÁË v1.4.1£¬ÎÒÕâÀïÒѾ­¸ÄÁË)

kubectl create -f kubernetes-dashboard.yaml

½ØÍ¼ÈçÏÂ

ͨ¹ý describe ÃüÁîÎÒÃÇ¿ÉÒԲ鿴Æä±©Â¶³öµÄ NodePoint,È»ºó±ã¿É·ÃÎÊ

ËÄ¡¢ÆäËûµÄһЩ¿Ó

»¹ÓÐһЩÆäËûµÄ¿ÓµÈ×Å´ó¼ÒÈ¥ÃþË÷£¬ÆäÖÐÓÐÒ»¸öÊÇ DNS ½âÎö´íÎ󣬱íÏÖÐÎʽΪ POD ÄڵijÌÐòͨ¹ýÓòÃû·ÃÎʽâÎö²»ÁË£¬cat Ò»ÏÂÈÝÆ÷µÄ /etc/resolv.conf·¢ÏÖÖ¸ÏòµÄ dns ·þÎñÆ÷Óë kubectl get svc --namespace=kube-system ÖÐµÄ kube-dsn µØÖ·²»·û£»½â¾ö°ì·¨¾ÍÊÇ ±à¼­½ÚµãµÄ /etc/systemd/system/kubelet.service.d/10-kubeadm.conf Îļþ£¬¸ü¸Ä KUBELET_DNS_ARGS µØÖ·Îª get svc ÖÐµÄ kube-dns µØÖ·£¬È»ºóÖØÆô kubelet ·þÎñ£¬ÖØÐÂɱµô POD Èà kubernetes ÖØ½¨¼´¿É

ÆäËû¿Ó»¶Ó­´ó¼Ò²¹³ä

   
4106 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

ÔÆ¼ÆËãµÄ¼Ü¹¹
¶ÔÔÆ¼ÆËã·þÎñÄ£ÐÍ
ÔÆ¼ÆËãºËÐļ¼ÊõÆÊÎö
Á˽âÔÆ¼ÆËãµÄ©¶´
Ïà¹ØÎĵµ

ÔÆ¼ÆËã¼ò½é
ÔÆ¼ÆËã¼ò½éÓëÔÆ°²È«
ÏÂÒ»´úÍøÂç¼ÆËã--ÔÆ¼ÆËã
ÈídzÎöÔÆ¼ÆËã
Ïà¹Ø¿Î³Ì

ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ
ÔÆ¼ÆËãÓ¦ÓÃÓ뿪·¢
CMMIÌåϵÓëʵ¼ù
»ùÓÚCMMI±ê×¼µÄÈí¼þÖÊÁ¿±£Ö¤