k8s 手动安装指南

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            .........
 


    
   
   
 

你可能感兴趣的:(k8s 手动安装指南)