k8s使用二进制包进行安装


1.  准备工作:

       下载二进制包,下载地址:https://github.com/kubernetes/kubernetes/releases

     

     翻墙软件:https://github.com/getlantern/lantern

       使用翻墙软件下载k8s v1.8.8。

     下载以后解压,看到的内容如下:

     

2.  安装etcd,etcd也使用二进制文件进行安装。etcd服务是k8s的主数据库,在安装k8s各服务之前需要首先安装和启动。

         1. 下载etcd的二进制文件,https://github.com/coreos/etcd/releases/download/v3.2.15/etcd-v3.2.15-linux-amd64.tar.gz。

         2. 解压缩以后,看到的内容如下:

         

                   3. 将etcd和etcdctl文件复制到/usr/bin目录下。

          cp etcd etcdctl /usr/bin

      4. 设置systemd服务文件,在/usr/lib/systemd/system/etcd.service,添加下面的内容:

[Unit]
Description=etcd.service
[Service]
Type=notify
TimeoutStartSec=0
Restart=always
WorkingDirectory=/var/lib/etcd
EnvironmentFile=-/etc/etcd/etcd.conf
ExecStart=/usr/bin/etcd 
[Install]
WantedBy=multi-user.target

        提前创建WorkingDirectory对应的目录;

        提前创建EnvironmentFile对应的配置文件,并添加内容如下:

ETCD_NAME=ETCD Server
ETCD_DATA_DIR="/var/lib/etcd/"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://172.16.252.217:2379"

        配置开机启动

#systemctl daemon-reload
#systemctl enable etcd.service
#systemctl start etcd.service

        检查一下是否启动成功:

        

3.  安装kube-apiserver服务

       1.  将kube-apiserver可执行文件复制到/usr/bin目录。

              cp kube-apiserver kube-controller-manager kube-scheduler /usr/bin

     2.  配置服务文件kube-apiserver,在/usr/lib/systemd/system/kube-apiserver.service

[Unit]
Description=Kubernetes API Server
After=etcd.service
Wants=etcd.service

[Service]
EnvironmentFile=/etc/kubernetes/apiserver
ExecStart=/usr/bin/kube-apiserver  \
        $KUBE_ETCD_SERVERS \
        $KUBE_API_ADDRESS \
        $KUBE_API_PORT \
        $KUBE_SERVICE_ADDRESSES \
        $KUBE_ADMISSION_CONTROL \
        $KUBE_API_LOG \
        $KUBE_API_ARGS 
Restart=on-failure
Type=notify
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

     3.  配置文件/etc/kubernetes/apiserver,内容如下:

KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"
KUBE_API_PORT="--insecure-port=8080"
KUBE_ETCD_SERVERS="--etcd-servers=http://172.16.252.217:2379"
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=169.169.0.0/16"
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota"
KUBE_API_LOG="--logtostderr=false --log-dir=/home/k8s-t/log/kubernets --v=2"
KUBE_API_ARGS=" "

     4.  设置开机启动   

systemctl enable kube-apiserver.service
systemctl start kube-apiserver.service

        当启动kube-apiserver.service的服务的时候,报错:

[root@k8s-v1 system]# journalctl -xn -u kube-apiserver.service 
-- Logs begin at 三 2018-02-28 10:13:48 CST, end at 三 2018-02-28 10:16:17 CST. --
2月 28 10:16:17 k8s-v1.8 systemd[2234]: Failed at step EXEC spawning /usr/bin/kube-apiserver: Permission denied
-- Subject: Process /usr/bin/kube-apiserver could not be executed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- The process /usr/bin/kube-apiserver could not be executed and failed.
-- 
-- The error number returned while executing this process is 13.
2月 28 10:16:17 k8s-v1.8 systemd[1]: kube-apiserver.service: main process exited, code=exited, status=203/EXEC
2月 28 10:16:17 k8s-v1.8 systemd[1]: Failed to start Kubernetes API Server.
-- Subject: Unit kube-apiserver.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit kube-apiserver.service has failed.
-- 
-- The result is failed.
2月 28 10:16:17 k8s-v1.8 systemd[1]: Unit kube-apiserver.service entered failed state.
2月 28 10:16:17 k8s-v1.8 systemd[1]: kube-apiserver.service holdoff time over, scheduling restart.
2月 28 10:16:17 k8s-v1.8 systemd[1]: Stopping Kubernetes API Server...
-- Subject: Unit kube-apiserver.service has begun shutting down
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit kube-apiserver.service has begun shutting down.
2月 28 10:16:17 k8s-v1.8 systemd[1]: Starting Kubernetes API Server...
-- Subject: Unit kube-apiserver.service has begun with start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit kube-apiserver.service has begun starting up.
2月 28 10:16:17 k8s-v1.8 systemd[1]: kube-apiserver.service start request repeated too quickly, refusing to start.
2月 28 10:16:17 k8s-v1.8 systemd[1]: Failed to start Kubernetes API Server.
-- Subject: Unit kube-apiserver.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit kube-apiserver.service has failed.
-- 
-- The result is failed.
2月 28 10:16:17 k8s-v1.8 systemd[1]: Unit kube-apiserver.service entered failed state.

         解决方法:因为/usr/bin/kube-apiserver文件没有执行权限。一定要注意。

4.  安装kube-controller-manager服务

     1.  将可执行文件拷贝到/usr/bin目录下。

     2.  配置服务文件kube-controller-manager,在/usr/lib/systemd/system/kube-controller-manager.service 

[Unit]
Description=Kubernetes Scheduler
After=kube-apiserver.service 
Requires=kube-apiserver.service

[Service]
EnvironmentFile=-/etc/kubernetes/controller-manager
ExecStart=/usr/bin/kube-controller-manager \
        $KUBE_MASTER \
        $KUBE_CONTROLLER_MANAGER_ARGS
Restart=on-failure
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

       3.  配置文件/etc/kubernetes/controller-manager,内容如下: 

KUBE_MASTER="--master=http://172.16.252.217:8080"
KUBE_CONTROLLER_MANAGER_ARGS=" "

5.  安装kube-scheduler服务。

     1.  将可执行文件复制到/usr/bin目录下。

     2.  配置服务文件,在/usr/lib/systemd/system/kube-scheduler.service  

[Unit]
Description=Kubernetes Scheduler
After=kube-apiserver.service 
Requires=kube-apiserver.service

[Service]
User=root
EnvironmentFile=-/etc/kubernetes/scheduler
ExecStart=/usr/bin/kube-scheduler \
        $KUBE_MASTER \
        $KUBE_SCHEDULER_ARGS
Restart=on-failure
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

      3.  配置文件/etc/kubernetes  

KUBE_MASTER="--master=http://172.16.252.217:8080"
KUBE_SCHEDULER_ARGS="--logtostderr=true --log-dir=/home/k8s-t/log/kubernetes --v=2"

6.  kubectl命令行工具

     复制二进制文件到/usr/bin目录下。

     cp kubectl /usr/bin/

     并给kubectl文件执行权限  chmod 755 kubectl

7.  在node节点上安装kubelet和kube-proxy服务

     因为kubelet服务依赖于docker服务,所以在node节点上要提前安装docker。

     1.  安装docker。

        yum install docker -y

     2.  安装kubelet服务。

        复制执行文件到/usr/bin目录下,并给执行权限。

        配置服务文件kubelet.service,在/usr/lib/systemd/system/目录下。

[Unit]
Description=Kubernetes Kubelet Server
After=docker.service
Requires=docker.service

[Service]
WorkingDirectory=/var/lib/kubelet
EnvironmentFile=-/etc/kubernetes/kubelet
ExecStart=/usr/bin/kubelet \
            $KUBE_LOGTOSTDERR \
            $KUBE_LOG_LEVEL \
            $KUBELET_API_SERVER \
            $KUBELET_ADDRESS \
            $KUBELET_PORT \
            $KUBELET_HOSTNAME \
            $KUBE_ALLOW_PRIV \
            $KUBELET_POD_INFRA_CONTAINER \
            $KUBELET_ARGS
Restart=on-failure

[Install]
WantedBy=multi-user.target

        需要提前创建目录/var/lib/kubelet。

        配置文件/etc/kubernetes/kubelet。  

# kubernetes kubelet (minion) config

# The address for the info server to serve on (set to 0.0.0.0 or "" for all interfaces)
KUBELET_ADDRESS="--address=0.0.0.0"

# The port for the info server to serve on
# KUBELET_PORT="--port=10250"

# You may leave this blank to use the actual hostname
KUBELET_HOSTNAME="--hostname-override=172.16.252.218"

# location of the api-server
KUBELET_API_SERVER="--api-servers=http://172.16.252.217:8080"

# pod infrastructure container
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=172.16.20.215:5000/pod-infrastructure:pod-base"

# Add your own!
KUBELET_ARGS=""

     3.  启动kubelet服务。

        systemctl daemon-reload

        systemctl enable kubelet.service

        systemctl start kubelet.service

        结果启动的时候,报错。后来检查/var/log/message,一定要仔细检查,看到unkown --api-servers,后来查看一些文档,发现v.18以后,已经不支持--api-servers参数。

        所以需要在/etc/kubernetes/kubelet文件中注释掉--api-servers这一行。

        继续启动,又有报错,如下:

Mar  2 13:19:46 k8s-node1 kubelet: error: failed to run Kubelet: Running with swap on is not supported, please disable swap! or set --fail-swap-on flag to false. /proc/swaps contained: [Filename				Type		Size	Used	Priority /dev/dm-0                               partition	2113532	0	-1]

        解决方法:

        需要在KUBELET_ARGS加参数:--fail-swap-on=false

        继续启动,又有报错,如下:

Mar  2 13:56:28 k8s-node1 kubelet: error: failed to run Kubelet: failed to create kubelet: misconfiguration: kubelet cgroup driver: "cgroupfs" is different from docker cgroup driver: "systemd"

        解决方法:

        需要在KUBELET_ARGS加参数:--fail-swap-on=false

        继续启动,没有错误了。

        现在把kubelet.service和kubelet配置文件,展示出来。

[root@k8s-node1 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 $KUBELET_ARGS
Restart=on-failure

[Install]
WantedBy=multi-user.target 
[root@k8s-node1 kubelet]# cat /etc/kubernetes/kubelet

# Add your own!
KUBELET_ARGS="--address=172.16.252.218 --port=10250 --hostname-override=172.16.252.218 --allow-privileged=false --kubeconfig=/etc/kubernetes/kubelet.kubeconfig --cluster-dns=10.10.10.2 --cluster-domain=cluster.local --fail-swap-on=false --cgroup-driver=systemd --logtostderr=true --log-dir=/var/log/kubernetes --v=4"

     4.  复制kube-proxy执行文件到/usr/bin目录下,并给文件执行权限。

        配置服务文件,在/usr/lib/systemd/system/kube-proxy.service

[Unit]
Description=Kubernetes Kube-Proxy Server
After=network.target

[Service]
EnvironmentFile=-/etc/kubernetes/proxy
ExecStart=/usr/bin/kube-proxy \
	    $KUBE_LOGTOSTDERR \
	    $KUBE_LOG_LEVEL \
	    $KUBE_MASTER \
	    $KUBE_PROXY_ARGS
Restart=on-failure
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

        配置文件/etc/kubernetes/proxy,内容如下:

[Unin proxy config

# default config should be adequate

# Add your own!
KUBE_PROXY_ARGS="--master=http://172.16.252.217:8080 --hostname-override=172.16.252.218 --logtostderr=true "

  

        

        

                  

        

        

 

        

      

                 

      

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM