kubernetes 实践指南
kubernetes安装与配置
至少两台主机
docker versio >1.9 https://www.docker.com
etcd version>2.0 https://github.com/cores/etcd/releases
linux core>3.10
安装:yum install kubernetes
二进制安装:https://github.com/kubernetes/kubernetes/releases
kubernetes.tar.gz包括了kubernetes的服务程序文件,
解压后 server中包括了要运行的全部服务程序文件
hyperkube 总控程序
kube-apiserver apiserver主程序
kube-apisever.docker_tag apiserver docker 镜像的tag
kube-apiserver.tar apiserverdocker 镜像文件
kube-controller-manager controller-manager 主程序
kube-controller-manager.docker.tag controller-manager docker 镜像的tag
kube-controller-manager.tar controller-manager docker 镜像文件
kubectl 客户端命令行工具
kubelet kubectl主程序
kube-proxy proxy主程序
kube-scheduler scheduler主程序
kube-scheduler.docker_tag scheduler 镜像的tag
kube-scheduler.tar scheduler 镜像文件
Kubernetes Master 节点安装部署etcd 、kube-apisever、kube-controller-manager、kube-scheduler
Kubernetes Node节点作为客户端 只需kube-proxy kubelet
配置和启动Kubernetes服务
1)# systemctl disable firewalld
# systemctl stop firewalld
将kubernetes的可执行文件复制到/usr/bin/(其他目录时,则将systemd服务文件中的文件路径修改
$$$master 上的etcd kube-apiserver kube-controller-manager kube-scheduler
tecd服务作为主数据库,需要先安装启动
从Github官网下载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=multi-user.target
其中WorkDirectory(/var/lib/etcd/)表示数据保存的目录,需要在etcd服务启动前创建
/etc/etcd/etcd.conf 一般不需要 特殊的配置参数 默认listen (node)2379
配置完成后,通过systemctl.start 命令 启动etcd服务,同时使用 systemctl enable 将服务加入到启动列表中
#systemctl daemon-reload
#systemctl enable etcd.service
#systemctl start etcd.service
通过执行etcd cluster-health,就可以验证etcd是否正确启动:
#etcd cluster-health
member fdfdfsfdfdf is healthy:got ..............
2) kube-apiserver服务
将其可执行文件复制到/usr/bin目录中
编辑systemd服务文件/usr/lib/system/kube-apiserver
[Unit]
Description=Kubernetes API Server
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=etc.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
配置文件的内容包括kube-apiserver的全部启动参数,主要的配置参数在变量KUBE_API_ARGS
配置文件/etc/kubernetes/apiserver
cat /etc/kubernetes/apiserver
KUBE_API_ARGS="--etcd_servers=https://127.0.0.1:2379
--insecure-bind-address=0.0.0.0 --insecure-port=8080
--service-cluster-ip-range=169.169.0.0/16 --sevice-node-port-range=1-65535
--admission_control=NamespaceLifecycle,LimitRanger,SecurityContextDeny,
ServiceAccount,ResourceQuota --logtostderr=false --log-dir=/var/log/ kubeenetes --v=2"
对启动参数的说明如下。
@--etcd_servers :指定etcd服务的URL
--insecure-bind-address:apiserver 绑定主机的非安全IP 地址 0.0.0.0表示所有IP
--insecure-port:apiserver 绑定主机的非安全端口号,默认为8080
--service-cluster-ip-range: kubernetes 集群中Service的虚拟IP地址范围,以CIDR格式表示,eg:169.169.0.0/16 ,该范围不能和物理机IP段重合
----sevice-node-port-range :service可映射物理机端口号的范围默认 30000-32767
--admission_control:集群准入控制设置 各控制模块以插件形式一词生效
--logostderr:设置false表示将日志写入文件,不写入stderr.
--log-dir:日志目录
--v :日志级别
3)kube-controller-manager服务
kube-controller-manager depend on kube-apiserver服务
#cat /usr/lib/systemd/systemd/kube-controller-manager.service
[Unit]
Description=Kubernetes Controller Manager
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=kube-apiserver.service @
Require=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
配置文件: /usr/bin/kube-controller-manager $KUBE_CONTROLLER_MANAGER_ARGS
#cat /etc/kubernetes/controller-manager
KUBE_CONTROLLER_MANAGER_ARGS="--master=http://192.168.18.3:8080
--logtostderr=false --log-dir=/var/log/kubernetes --v=2"
参数说明:
--master: 指定apiserver的URL地址
--logtostderr:设置false表示将日志写入文件,不写入stderr
--log-dir:日志mul
--v :日志级别
4)kube-scheduler服务
kube-scheduler服务也依赖kube-apiserver服务
#cat /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/scheduler
ExecStart=/usr/bin/kube-scheduler $KUBE_SCHEDULER_ARGS
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
配置文件/etc/kubernetes/scheduler
#cat /etc/kubernetes/scheduler
KUBE_SCHEDULER_ARGS="--master=https://192.168.18.3:8080 --logtostderr=false
--log-dir=/var/log/kubernetes --v=2"
参数说明:
--master :指定apiserver的URL地址
--logtostderr:设置false表示将日志写入文件,不写入stderr
--log-dir:日志mul
--v :日志级别
配置完成以后 执行systemctl start 按顺序启动这三个服务,同时使用systemctl enable 命令将服务加入启动列表中
#systemctl daemon-reload
systemctl enable kube-apiserver.service kube-controller-manager.service kube-scheduler.service
systemctl start kube-apiserver.service kube-controller-manager.service kube-scheduler.service
通过systemctl status
Node节点上的kubelet ,kube-proxy服务
在node节点需要预装号 Docker Demon >>http://www.docker.com
1)kubelet服务
#cat /usr/lib/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 $KUBBLET_ARGS
Restart=on-failure
[Install]
WantedBy=multi-user.target
配置文件 /etc/kubernetes/kubelet
#cat /etc/kubernetes/kubelet
$KUBBLET_ARGS="--api-servers=http://192.168.18.3:8080
--hostname-override=192.168.18.3 --logtostderr=false
--log-dir=/var/log/kubernetes --v=2"
参数说明:
--api-servers :指定apiserver的URL地址,可以多个
--hostname-override:设置本node 的名称
--logtostderr:设置false表示将日志写入文件,不写入stderr
--log-dir:日志mul
--v :日志级别
2)kube-proxy服务 依赖于network服务
[Unit]
Description=Kubernetes Kube-Proxy Server
Documentation=https://:github.com/GoogleCloudPlatform/kubernets
After=network.target
Requires=network.service
[Service]
EnvironmentFile=/etc/kubernetes/proxy
ExecStart=/user/bin/kube-proxy $KUBE_PROXY_ARGS
Restart=on-failure
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
配置文件/etc/kubernetes/proxy $KUBE_PROXY_ARGS
#cat /etc/kubernetes/proxy
KUBE_PROXY_ARGS=" --master=http://192.168.18.3:8080
-logtostderr=false --log-dir=/var/log/kubernetes --v=2"
参数说明:
--master:apiserver的URL地址
--logtostderr:设置false表示将日志写入文件,不写入stderr
--log-dir:日志mul
-v:日志级别
配置完成后通过systemctl启动
#systemctl daemon-reload
#systemctl enable kubelet.service kube-proxy.service
#systemctl start kubelet.service kube-proxy.service
!master节点:
kubectl get nodes
name status .........
192.168.18.3 Ready .........