这里采用kubernetes二进制文件和手工配置启动参数的方式安装,首先准备kubernetes 1.3.0
在kubernetes.tar.gz包含Kuernetes服务程序文件、文档和示例,解压缩后,server子目录中的kubernetes-server-linux-amd64.tar.gz包含Kubernetes需要运行的全部服务程序文件。
hyperkube:总控程序,用于运行其他Kubernetes程序
kube-apiserver:apiserver主程序
kube-apiserver.docker_tag:apiserver docker镜像的tag
kube-apiserver.tar:apiserver docker镜像文件
kube-controller-manager:controller-manager主程序
kube-controller-manager.docker_tag
kube-controller-manager.tar
kubectl:客户端命令行工具
kubelet:kubelet主程序
kube-proxy
kube-scheduler
kube-scheduler.docker_tag
kube-scheduler.tar
在Kubernetes Master节点安装部署etcd、kube-apiserver、kube-controller-manager、kube-scheduler服务进程
在工作Node仅部署kubelet和kubeproxy服务进程。
kubernetes提供hyperkube对上面服务启动。
Master
etcd服务
etcd服务作为Kubernetes集群的主数据库,在安装Kubernetes各服务之前需要首先安装和启动。
首先下载etcd的二进制文件,并将etcd和etcdctl文件复制到/usr/bin目录。
设置systemd服务文件/usr/lib/systemd/system/etcd.service
[Unit]
Description=Etcd Server
After=network.target
[Service]
Type=simple
WorkingDirectory=/var/lib/etcd/
EnvironmentFile=-/etc/etcd/etcd.conf
ExecStart=/usr/bin/etcd
[Install]
WantedBy=nulti-user.target
WorkingDirectory表示etcd数据保存的目录,需要在启动etcd服务之前创建。
/etc/etcd/etcd.conf
通常不需要特殊配置,默认监听http://127.0.0.1:2379
启动并开机启动
systemctl daemon-reload
systemctl enable etcd.service
systemctl start etcd.service
验证etcd是否正确启动
etcdctl cluster-health
kube-apiserver
将kube-apiserver可执行文件复制到/usr/bin目录
编辑systemd服务文件/usr/lib/systemd/system/kube-apiserver.service
[Unit]
Description=Kubernetes API Server
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=etcd.service
Wants=etcd.service
[Service]
EnvironmentFile=/etc/kubernetes/apiserver
ExecStart=/usr/bin/kube-apiserver $KUBE_API_ARGS
Restart=on-failure
Type=notify
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
配置文件/etc/kubernetes/apiserver
包括kube-apiserver的全部启动参数,主要配置参数在KUBE_API_ARGS
指定
KUBE_API_ARGS="--etcd_servers=http://127.0.0.1:2379
--insecure-bind-address=0.0.0.0 --insecure-port=8080
--service-cluster-ip-range=169.169.0.0/16 --service-node-port-range=1-65535
--admission_control=NamespaceLifecycle,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota
--logtostderr=false --log-dir=/var/log/kubernetes --v=2"
kube-controller-manager
kube-controller-manager服务依赖于kube-apiserver服务
systemd文件/usr/lib/systemd/system/kube-controller-manager.service
[Unit]
Description=Kubernetes Controller Manager
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=kube-apiserver.service
Requires=kube-apiserver.service
[Service]
EnvironmentFile=/etc/kubernetes/controller-manager
ExecStart=/usr/bin/kube-controller-manager $KUBE_CONTROLLER_MANAGER_ARGS
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
配置文件/etc/kubernetes/controller-manager
包括全部启动参数
KUBE_CONTROLLER_MANAGER_ARGS="--master=http://192.168.18.3:8080
--logtostderr=false --log-dir=/var/log/kubernetes --v=2"
kube-scheduler
kube-scheduler服务也依赖于kube-apiserver服务
systemd文件/usr/lib/systemd/system/kube-scheduler.service
[Unit]
Description=Kubernetes Scheduler
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=kube-apiserver.service
Requires=kube-apiserver.service
[Service]
EnvrionmentFile=/etc/kubernetes/scheduler
ExecStart=/usr/bin/kube-scheduler $KUBE_SCHEDULER_ARGS
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
配置文件/etc/kubernetes/scheduler
包含启动参数
KUBE_SCHEDULER_ARGS="--master=http://192.168.18.3:8080
--logtostderr=false --log-dir=/var/log/kubernetes --v=2"
启动服务
systemctl daemon-reload
systemctl enable kube-apiserver.service
systemctl start kube-apiserver.service
systemctl enable kube-controller-manager
systemctl start kube-controller-manager
systemctl enable kube-scheduler
systemctl start kube-scheduler
Node
在工作Node节点需要预先安装Docker Daemon,并正常启动。
kubelet
kubelet服务依赖于Docker服务usr/libe/systemd/system/kubelet.service
[Unit]
Description=Kubernetes Kubelet Server
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=docker.service
Requires=docker.service
[Service]
WorkingDirectory=/var/lib/kubelet
EnvironmentFile=/etc/kubernetes/kubelet
ExecStart=/usr/bin/kubelet $KUBELET_ARGS
Restart=on-failure
[Install]
WantedBy=multi-user.target
WorkingDirectory表示kubelet保存数据的目录,需要在启动kubelet服务之前创建。
配置文件/etc/kubernetes/kubelet
包括kubelet全部启动参数
KUBELET_ARGS="--api-servers=http://192.168.18.3:8080
--hostname-override=192.168.18.3
--logtostderr=false
--log-dir=/var/log/kubernetes
--v=2"
kube-proxy
kube-proxy服务依赖于network服务
[Unit]
Description=Kubernetes Kube-Proxy Server
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=network.target
Requires=network.service
[Service]
EnvironmentFile=/etc/kubernetes/proxy
ExecStart=/usr/bin/kube-proxy $KUBE_PROXY_ARGS
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
配置文件/etc/kubernetes/proxy
包括kube-proxy全部启动参数
KUBE_PROXY_ARGS="--master=http://192.168.18.3:8080
--logtostderr=false
--log-dir=/var/log/kubernetes
--v=2"
启动服务
systemctl daemon-reload
systemctl enable kubelet.service
systemctl start kubelet.service
systemctl enable kube-proxy
systemctl start kube-proxy