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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Kubernetes(K8S)¼¯Èº¹ÜÀíDockerÈÝÆ÷£¨²¿ÊðÆª£©
 
  3298  次浏览      27
 2018-7-25
 
±à¼­ÍƼö:
±¾ÎÄÀ´×ÔÓÚcsdn£¬ÎÄÕ½̸ø´ó¼ÒÈçºÎ¿ìËÙ²¿ÊðÒ»Ì×Kubernetes¼¯Èº,ÒÔ¼°K8S¼¯Èº²¿ÊðÓм¸ÖÖ·½Ê½µÈ¡£

Ò»¡¢¼Ü¹¹ÍØÆËͼ

¶þ¡¢»·¾³¹æ»®

»·¾³ËµÃ÷£º

²Ù×÷ϵͳ£ºUbuntu16.04 or CentOS7

Kubernetes°æ±¾£ºv1.8.3

Docker°æ±¾£ºv17.09-ce

¾ù²ÉÓõ±Ç°×îÐÂÎȶ¨°æ±¾¡£

¹Ø±Õ selinux¡£

Èý¡¢²¿Êð¼¯Èº

3.1 ÏÂÔØ¶þ½øÖưü

´ò¿ªÏÂÃæÍøÖ·£¬ÏÂÔØÏÂÃæÁ½¸öºìÉ«¿ò¿òµÄ°ü¡£

https: //github.com/kubernetes /kubernetes /blob/master/CHANGELOG-1.8.md#v183

ÏÂÔØÍê³Éºó£¬ÉÏ´«µ½·þÎñÆ÷£º

kubernetes- server-linux- amd64.tar.gzÉÏ´«µ½master ½Úµã¡£

kubernetes- node-linux- amd64.tar.gz ÉÏ´«µ½node ½Úµã¡£

3.2 °²×°etcd3

k8s-master# yum install etcd ¨Cy
k8s-master# vi /etc/etcd/etcd.conf
ETCD_NAME="default"
ETCD_DATA_DIR = "/var/lib/etcd/default"
ETCD_LISTEN_CLIENT_URLS = "http://0.0.0.0:2379"
ETCD_ADVERTISE_CLIENT_URLS =http://0.0.0.0:2379
k8s-master# systemctl enable etcd
k8s-master# systemctl start etcd

×¢Ò⣺UbuntuϵͳetcdÅäÖÃÎļþÔÚ/etc/default/etcd¡£

3.3 ÔËÐÐMaster½Úµã×é¼þ

k8s-master# tar zxvf kubernetes- server- linux-amd64 .tar .gz
k8s-master # mkdir -p /opt /kubernetes /{bin,cfg}
k8s- master # mv kubernetes/server/bin /{ kube - apiserver ,kube - scheduler,kube-controller-manager ,kubectl } /opt /kubernetes /bin

3.3.1 apiserver

´´½¨ÅäÖÃÎļþ£º

# vi /opt/kubernetes /cfg/kube- apiserver
# ÆôÓÃÈÕÖ¾±ê×¼´íÎó
KUBE_LOGTOSTDERR = "--logtostderr=true"
# ÈÕÖ¾¼¶±ð
KUBE_LOG_LEVEL = "--v=4"
# Etcd·þÎñµØÖ·
KUBE_ETCD_SERVERS = "--etcd-servers=http: //192.168 .0.211: 2379"
# API·þÎñ¼àÌýµØÖ·
KUBE_API_ADDRESS = "--insecure-bind-address =0.0.0.0"
# API·þÎñ¼àÌý¶Ë¿Ú
KUBE_API_PORT="--insecure-port = 8080"
# ¶Ô¼¯ÈºÖгÉÔ±ÌṩAPI·þÎñµØÖ·
KUBE_ADVERTISE_ ADDR="--advertise-address= 192.168 .0. 211 "
# ÔÊÐíÈÝÆ÷ÇëÇóÌØÈ¨Ä£Ê½£¬Ä¬ÈÏfalse
KUBE_ALLOW_PRIV="--allow-privileged = false"
# ¼¯Èº·ÖÅäµÄIP·¶Î§
KUBE_SERVICE_ ADDRESSES = "--service-cluster-ip-range= 10.10.10.0 /24"

´´½¨systemd·þÎñÎļþ£º

# vi /lib/systemd/system /kube- apiserver.service
[Unit ]
Description=Kubernetes API Server
Documentation = https://g ithub.com /kubernetes / kubernetes
[Service]
EnvironmentFile = -/opt/kubernetes/cfg /kube-apiserver
#ExecStart = /opt/kubernetes /bin/kube-apiserver ${ KUBE_ APISERVER _OPTS}
ExecStart = /opt/kubernetes/bin /kube-apiserver \
$ { KUBE_LOGTOSTDERR} \
$ {KUBE_LOG_LEVEL} \
$ {KUBE_ETCD_SERVERS} \
$ {KUBE_API_ADDRESS} \
$ {KUBE_API_PORT} \
$ {KUBE_ADVERTISE_ADDR} \
$ {KUBE_ALLOW_PRIV} \
$ {KUBE_SERVICE_ADDRESSES}
Restart = on-failure
[Install]
WantedBy = multi- user.target

Æô¶¯·þÎñ£¬²¢ÉèÖÿª»úÆô¶¯£º

# systemctl daemon-reload
# systemctl enable kube-apiserver
# systemctl restart kube-apiserver

×¢Ò⣺apiserverĬÈÏÖ§³Öetcd3£¬Èç¹ûÊÇetcd2£¬ÐèÆô¶¯Ê±Ö¸¶¨°æ±¾Ñ¡Ïî--storage-backend=etcd2

3.3.2 scheduler

´´½¨ÅäÖÃÎļþ£º

# vi /opt/kubernetes/ cfg/kube-scheduler
KUBE_ LOGTOSTDERR = "--logtostderr=true"
KUBE_LOG_LEVEL = "--v=4"
KUBE_MASTER="--master = 192.168.0.211:8080"
KUBE_LEADER_ ELECT = "--leader-elect"

´´½¨systemd·þÎñÎļþ£º

# vi /lib/systemd /system/kube- scheduler.service
[Unit]
Description = Kubernetes Scheduler
Documentation = https: //github.com /kubernetes / kubernetes
[Service]
EnvironmentFile = -/opt/kubernetes/cfg/kube-scheduler
ExecStart = /opt/kubernetes/bin/kube-scheduler \
${KUBE_LOGTOSTDERR} \
${KUBE_LOG_LEVEL} \
${KUBE_MASTER} \
${KUBE_LEADER_ELECT}
Restart = on-failure
[Install]
WantedBy = multi-user.target

Æô¶¯·þÎñ£¬²¢ÉèÖÿª»úÆô¶¯£º

# systemctl daemon-reload
# systemctl enable kube-scheduler
# systemctl restart kube-scheduler

3.3.3 controller-manager

´´½¨ÅäÖÃÎļþ£º

# vi /opt /kubernetes /cfg /kube-controller-manager
KUBE_LOGTOSTDERR = "--logtostderr=true"
KUBE_LOG_LEVEL = "--v=4"
KUBE_MASTER = "- -master=192.168.0.211:8080"

´´½¨systemd·þÎñÎļþ£º

# vi /lib /systemd/system /kube- controller-manager . service
[Unit]
Description = Kubernetes Controller Manager
Documentation = https:/ /github.com /kubernetes / kubernetes
[Service]
EnvironmentFile = -/opt/kubernetes/cfg/kube-controller - manager
ExecStart = /opt/kubernetes/bin /kube- controller-manager \
${KUBE_LOGTOSTDERR} \
${KUBE_LOG_LEVEL} \
${KUBE_MASTER} \
${KUBE_LEADER_ELECT}
Restart = on-failure
[Install]
WantedBy = multi-user.target

Æô¶¯·þÎñ£¬²¢ÉèÖÿª»úÆô¶¯£º

# systemctl daemon- reload
# systemctl enable kube- controller-manager
# systemctl restart kube- controller-manager

3.3.4 С½á

Master½Úµã×é¼þ¾ÍÈ«²¿Æô¶¯ÁË£¬ÐèҪעÒâµÄÊÇ·þÎñÆô¶¯Ë³ÐòÓÐÒÀÀµ£¬ÏÈÆô¶¯etcd£¬ÔÙÆô¶¯apiserver£¬ÆäËû×é¼þÎÞ˳ÐòÒªÇó¡£

²é¿´Master½Úµã×é¼þ½ø³Ì״̬£º

˵Ã÷×é¼þ¶¼ÔÚÔËÐС£

Èç¹ûÆô¶¯Ê§°Ü£¬Çë²é¿´Æô¶¯ÈÕÖ¾£¬ÀýÈ磺

#journalctl -u kube-apiserver

3.4 ÔËÐÐNode½Úµã×é¼þ

k8s-node01# tar zxvf kubernetes- node-linux- amd64 . tar .gz
k8s -node01# mkdir -p /opt/kubernetes/ {bin,cfg}
k8s- node01# mv kubernetes/node/bin /{kubelet,kube-proxy } /opt/kubernetes /bin/

3.4.1 kubelet

´´½¨kubeconfigÅäÖÃÎļþ£º

# vi /opt/kubernetes /cfg/kubelet .kubeconfig
apiVersion : v1
kind : Config
clusters :
- cluster :
server : http://192.168.0.211:8080
name : local
contexts :
- context :
cluster : local
name : local
current-context : local

kubeconfigÎļþÓÃÓÚkubeletÁ¬½Ómaster apiserver¡£

´´½¨ÅäÖÃÎļþ£º

# vi /opt /kubernetes /cfg /kubelet
# ÆôÓÃÈÕÖ¾±ê×¼´íÎó
KUBE_LOGTOSTDERR = "--logtostderr=true"
# ÈÕÖ¾¼¶±ð
KUBE_LOG_LEVEL = "--v=4"
# Kubelet·þÎñIPµØÖ·
NODE_ADDRESS = "--address=192.168.0.212"
# Kubelet·þÎñ¶Ë¿Ú
NODE_PORT="--port = 10250"
# ×Ô¶¨Òå½ÚµãÃû³Æ
NODE_HOSTNAME = "--hostname-override=192.168.0.212"
# kubeconfig·¾¶£¬Ö¸¶¨Á¬½ÓAPI·þÎñÆ÷
KUBELET_KUBECONFIG = "--kubeconfig = /opt /kubernetes / cfg /kubelet .kubeconfig"
# ÔÊÐíÈÝÆ÷ÇëÇóÌØÈ¨Ä£Ê½£¬Ä¬ÈÏfalse
KUBE_ALLOW_PRIV = "--allow-privileged = false"
# DNSÐÅÏ¢
KUBELET_DNS_ IP = "--cluster-dns=10.10.10.2"
KUBELET_DNS_ DOMAIN = "--cluster-domain=cluster.local"
# ½ûÓÃʹÓà Swap
KUBELET_SWAP = "--fail-swap-on = false"

´´½¨systemd·þÎñÎļþ£º

# vi /lib /systemd /system /kubelet.service
[Unit]
Description = Kubernetes Kubelet
After = docker.service
Requires = docker.service
[Service]
EnvironmentFile = -/opt/kubernetes /cfg/kubelet
ExecStart = /opt/kubernetes /bin/kubelet \
${KUBE_LOGTOSTDERR} \
${KUBE_LOG_LEVEL} \
${NODE_ADDRESS} \
${NODE_PORT} \
${NODE_HOSTNAME} \
${KUBELET_KUBECONFIG} \
${KUBE_ALLOW_PRIV} \
${KUBELET_DNS_IP} \
${KUBELET_DNS_DOMAIN} \
${KUBELET_SWAP}
Restart = on-failure
KillMode = process
[Install]
WantedBy = multi-user.target

Æô¶¯·þÎñ£¬²¢ÉèÖÿª»úÆô¶¯£º

# systemctl daemon-reload
# systemctl enable kubelet
# systemctl restart kubelet

3.4.2 proxy

´´½¨ÅäÖÃÎļþ£º

# vi /opt/kubernetes /cfg/kube- proxy
# ÆôÓÃÈÕÖ¾±ê×¼´íÎó
KUBE_LOGTOSTDERR = "--logtostderr=true"
# ÈÕÖ¾¼¶±ð
KUBE_LOG_LEVEL = "--v=4"
# ×Ô¶¨Òå½ÚµãÃû³Æ
NODE_HOSTNAME = "--hostname-override= 192.168.0.212"
# API·þÎñµØÖ·
KUBE_MASTER = "--master=http://192.168.0.211:8080"

´´½¨systemd·þÎñÎļþ£º

# vi /lib /systemd /system /kube-proxy.service
[ Unit]
Description = Kubernetes Proxy
After = network.target
[Service]
EnvironmentFile = -/opt/kubernetes /cfg/kube-proxy
ExecStart = /opt/kubernetes/bin/kube-proxy \
${KUBE_LOGTOSTDERR} \
${KUBE_LOG_LEVEL} \
${NODE_HOSTNAME} \
${KUBE_MASTER}
Restart=on-failure
[Install]
WantedBy = multi-user.target

Æô¶¯·þÎñ£¬²¢ÉèÖÿª»úÆô¶¯£º

# systemctl daemon-reload
# systemctl enable kube-proxy
# systemctl restart kube-proxy

3.4.3 С½á

ÆäËû½Úµã¼ÓÈ뼯ȺÓënode01·½Ê½Ïàͬ£¬µ«ÐèÐÞ¸ÄkubeletµÄ--addressºÍ--hostname-overrideÑ¡ÏîΪ±¾»úIP¡£

²é¿´Node½Úµã×é¼þ½ø³Ì״̬£º

˵Ã÷×é¼þ¶¼ÔÚÔËÐС£

Èç¹ûÆô¶¯Ê§°Ü£¬Çë²é¿´Æô¶¯ÈÕÖ¾£¬ÀýÈ磺

#journalctl -u kubelet

3.5 ÑéÖ¤¼¯ÈºÊÇ·ñ²¿Êð³É¹¦

ÉèÖÿÉÖ´ÐÐÎļþµ½ÏµÍ³±äÁ¿£¬·½±ãʹÓãº

# echo "export PATH = $PATH:/opt /kubernetes /bin" >> / etc / profile
# source /etc/profile

²é¿´¼¯Èº½Úµã״̬£º

Á½¸ö½Úµã¶¼¼ÓÈëµ½ÁËkubernetes¼¯Èº£¬¾Í´Ë²¿ÊðÍê³É¡£

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

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

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

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