这里采用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

results matching ""

    No results matching ""