±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚ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¼¯Èº£¬¾Í´Ë²¿ÊðÍê³É¡£ |