二进制离线安装docker和Kubernetes

1.docker的安装与配置

1.1.下载所需的 docker 二进制文件(也可以去笔者百度网盘获取资源,链接在最下方)

https://github.com/moby/moby/releases

1.2.创建docker目录,上传并解压二进制包

cd /usr

mkdir docker

cd docker

rz(选中上传准备好的docker二进制包)

tar –zxvf  docker-1.13.1.tgz

1.3.将解压目录下的所有docker*文件复制到/usr/bin下

cp /usr/docker/docker/docker* /usr/bin

1.4.创建 docker 的 启动文件

vi /usr/lib/systemd/system/docker.service

[Unit]

Description=Docker Application Container Engine

Documentation=http://docs.docker.io

[Service]

Environment="PATH=/root/local/bin:/bin:/sbin:/usr/bin:/usr/sbin"

EnvironmentFile=-/etc/sysconfig/docker

ExecStart=/usr/bin/dockerd --log-level=error $DOCKER_NETWORK_OPTIONS --insecure-registry 172.16.3.30:5000

ExecReload=/bin/kill -s HUP $MAINPID

Restart=on-failure

RestartSec=5

LimitNOFILE=infinity

LimitNPROC=infinity

LimitCORE=infinity

Delegate=yes

KillMode=process

[Install]

WantedBy=multi-user.target

1.5.关闭防火墙

systemctl stop firewalld systemctl disable firewalld

1.6.启动docker并设置开机自启

systemctl daemon-reload

systemctl enable docker systemctl start docker

1.7.测试

docker version

docker run hello-world

2.Kubernetes的安装与配置

2.1.下载所需版本的K8S二进制文件(下载需要翻墙,没有翻墙工具的可以去笔者百度网盘获取资源,链接在最下方)

https://github.com/kubernetes/kubernetes/releases

Service Binaries中的kubernetes-server-linux-amd64.tar.gz文件已经包含了 K8S所需要的全部组件,无需单独下载Client等组件

2.2.本次只部署一主一从两个节点

master:etcd、kube-apiserver、kube-controller-manager、kube-scheduler、docker

slaver:kubelet、kube-proxy、flanneld、docker

2.3.Master节点部署

2.3.1. etcd数据库安装

etcd是k8s集群的主数据库,在安装k8s其他服务之前首先安装与启动。

2.3.1.1.下载所需版本的etcd二进制文件

https://github.com/coreos/etcd/releases/

2.3.1.2.创建k8s目录,上传并解压二进制包

cd /usr

mkdir k8s

cd k8s

rz(选中上传准备好的etcd二进制包)

tar –zxvf  etcd-v3.3.11-linux-amd64.tar.gz

2.3.1.3.将解压目录下的etcd和etcdctl文件复制到/usr/bin下

cp etcd etcdctl /usr/bin/

2.3.1.4.创建 etcd 的 启动文件

vi /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

(其中WorkingDirectory为etcd数据保存的目录,需要在启动etcd服务之前首先创建)

2.3.1.5.创建配置/etc/etcd/etcd.conf文件红色部分为master节点的ip)

vi /etc/etcd/etcd.conf

ETCD_NAME=default

ETCD_DATA_DIR="/var/lib/etcd/default.etcd"

ETCD_LISTEN_CLIENT_URLS="http://172.16.3.30:2379,http://172.16.3.30:4001,http://127.0.0.1:2379,http://127.0.0.1:4001"

ETCD_ADVERTISE_CLIENT_URLS="http://172.16.3.30:2379,http://172.16.3.30:4001,http://127.0.0.1:2379,http://127.0.0.1:4001"

2.3.1.6.启动etcd服务并配置开机启动

systemctl daemon-reload

systemctl enable etcd.service

systemctl start etcd.service

2.3.1.7.校验

etcdctl cluster-health

2.3.2.kube-apiserver服务

2.3.2.1.将准备好的k8s二进制包上传并解压到/usr/k8s目录下

cd /usr/k8s

rz(选中上传准备好的k8s二进制包)

tar –zxvf  kubernetes-server-linux-amd64.tar.gz

2.3.2.2.将所需二进制文件复制到/usr/bin下

cp -r /usr/k8s/kubernetes/server/bin/{kube-apiserver,kube-controller-manager,kube-scheduler,kubectl} /usr/bin/

2.3.2.3.创建 kube-apiserver的启动文件

vi /usr/lib/systemd/system/kube-apiserver.service

[Unit]

Description=Kubernetes API Server

Documentation=https://github.com/GoogleCloudPlatform/kubernetes

After=network.target

After=etcd.service

[Service]

EnvironmentFile=-/etc/kubernetes/apiserver

ExecStart=/usr/bin/kube-apiserver \

            $KUBE_LOGTOSTDERR \

            $KUBE_LOG_LEVEL \

            $KUBE_ETCD_SERVERS \

            $KUBE_API_ADDRESS \

            $KUBE_API_PORT \

            $KUBELET_PORT \

            $KUBE_ALLOW_PRIV \

            $KUBE_SERVICE_ADDRESSES \

            $KUBE_ADMISSION_CONTROL \

            $KUBE_API_ARGS

Restart=on-failure

Type=notify

LimitNOFILE=65536

[Install]

WantedBy=multi-user.target

2.3.2.4.创建配置文件apiserver红色部分为master节点的ip)

vi  /etc/kubernetes/apiserver

KUBE_API_ADDRESS="--address=0.0.0.0"

KUBE_API_PORT="--port=8080"

KUBELET_PORT="--kubelet_port=10250"

KUBE_ETCD_SERVERS="--etcd_servers=http://172.16.3.30:2379"

KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16"

KUBE_ADMISSION_CONTROL="--admission_control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"

KUBE_API_ARGS=""

2.3.3.kube-controller-manger服务

2.3.3.1.创建kube-controller-manager的启动文件

vi /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

2.3.3.2.创建配置文件controller-manager红色部分为master节点的ip)

vi /etc/kubernetes/controller-manager

KUBE_CONTROLLER_MANAGER_ARGS="--master=http://172.16.3.30:8080 --logtostderr=true --log-dir=/var/lib/kubernetes --v=0"

2.3.4.kube-scheduler服务

2.3.4.1.创建kube-scheduler的启动文件

vi /usr/lib/systemd/system/kube-scheduler.service

[Unit]

Description=Kubernetes Scheduler Plugin

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

2.3.4.2.创建配置文件scheduler红色部分为master节点的ip)

vi /etc/kubernetes/scheduler

KUBE_SCHEDULER_ARGS="--master=http://172.16.3.30:8080 --logtostderr=true --log-dir=/var/log/kubernetes --v=0"

2.3.5.开启各组件并将其加入开机自启

systemctl daemon-reload

systemctl enable kube-apiserver.service

systemctl start kube-apiserver.service

systemctl enable kube-controller-manager.service

systemctl start kube-controller-manager.service

systemctl enable kube-scheduler.service

systemctl start kube-scheduler.service

2.3.6.验证 master 节点功能,并查看其状态(状态为running即为正常)

kubectl get componentstatuses

systemctl status etcd

systemctl status kube-apiserver

systemctl status kube-controller-manager

systemctl status kube-scheduler

2.4.slaver节点部署

2.4.0.设置iptables重启自动执行

vi ~/.bashrc

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -P INPUT ACCEPT

iptables -P FORWARD ACCEPT

iptables -F

source ~/.bashrc

2.4.1.安装和配置 kubelet

2.4.1.1.将准备好的k8s二进制包上传并解压到/usr/k8s目录下

cd /usr/k8s

rz(选中上传准备好的k8s二进制包)

tar –zxvf  kubernetes-server-linux-amd64.tar.gz

2.4.1.2.将所需二进制文件复制到/usr/bin下

cp -r /usr/k8s/kubernetes/server/bin/{kube-proxy,kubelet} /usr/bin/

2.4.1.3.创建kubelet的启动文件

vi /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 \

            $KUBE_LOGTOSTDERR \

            $KUBE_LOG_LEVEL \

            $KUBELET_ADDRESS \

            $KUBELET_PORT \

            $KUBELET_HOSTNAME \

            $KUBELET_API_SERVER \

            $KUBELET_POD_INFRA_CONTAINER \

            $KUBELET_ARGS

Restart=on-failure

KillMode=process

[Install]

WantedBy=multi-user.target

(其中WorkingDirectory为kubelet数据保存的目录,需要在启动kubelet服务之前首先创建)

2.4.1.4.创建配置文件kubelet红色部分为master节点的ip,蓝色部分为本节点的ip,黄色部分为私服ip)

vi /etc/kubernetes/kubelet

KUBELET_ADDRESS="--address=0.0.0.0"

KUBELET_PORT="--port=10250"

KUBELET_HOSTNAME="--hostname-override=172.16.3.37"

KUBELET_API_SERVER="--api-servers=http://172.16.3.30:8080"

KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=172.16.3.30:5000/pod-infrastructure:latest"

KUBELET_ARGS=""

vi /etc/kubernetes/config

KUBE_LOGTOSTDERR="--logtostderr=true"

# journal message level, 0 is debug

KUBE_LOG_LEVEL="--v=0"

# Should this cluster be allowed to run privileged docker containers

KUBE_ALLOW_PRIV="--allow-privileged=false"

# How the controller-manager, scheduler, and proxy find the apiserver

KUBE_MASTER="--master=http://172.16.3.30:8080"

KUBELET_API_SERVER="--api-servers=http://172.16.3.30:8080"

2.4.1.5.启动 kubelet并配置开机自启

systemctl daemon-reload

systemctl enable kubelet.service

systemctl start kubelet.service

2.4.1.6.查看状态信息

systemctl status kubelet.service

2.4.2.安装和配置 kube-proxy

2.4.2.1.创建kube-proxy的启动文件

vi /usr/lib/systemd/system/kube-proxy.service

[Unit]

Description=Kubernetes Kube-Proxy Server

Documentation=https://github.com/GoogleCloudPlatform/kubernetes

After=network.target

[Service]

EnvironmentFile=-/etc/kubernetes/config

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

2.4.2.2.创建配置文件kube-proxy红色部分为master节点的ip)

vi /etc/kubernetes/proxy

KUBE_PROXY_ARGS=""

vi /etc/kubernetes/config

KUBE_LOGTOSTDERR="--logtostderr=true"

# journal message level, 0 is debug

KUBE_LOG_LEVEL="--v=0"

# Should this cluster be allowed to run privileged docker containers

KUBE_ALLOW_PRIV="--allow-privileged=false"

# How the controller-manager, scheduler, and proxy find the apiserver

KUBE_MASTER="--master=http://172.16.3.30:8080"

KUBELET_API_SERVER="--api-servers=http://172.16.3.30:8080"

2.4.2.3. 启动 kube-proxy并配置开机自启

systemctl daemon-reload

systemctl enable kube-proxy

systemctl start kube-proxy

2.4.2.4.查看状态

systemctl status kube-proxy

2.4.3.检查节点状态(在主节点执行)

kubectl get nodes

2.4.4.部署 Flannel 网络

2.4.4.1.rpm包方式安装

2.4.4.2.下载rpm包

http://rpmfind.net/linux/rpm2html/search.php?query=flannel

2.4.4.3.将flannel的rpm包上传解压到k8s目录下

cd /usr/k8s

rpm -ivh flannel-0.7.1-4.el7.x86_64.rpm

2.4.4.4.配置flannel网络红色部分为master节点的ip,黄色部分为本身节点的网卡和ip)

vi /etc/sysconfig/flanneld

# Flanneld configuration options

# etcd url location.  Point this to the server where etcd runs

FLANNEL_ETCD_ENDPOINTS="http://172.16.3.30:2379"

# etcd config key.  This is the configuration key that flannel queries

# For address range assignment

FLANNEL_ETCD_PREFIX="/atomic.io/network"

# Any additional options that you want to pass

FLANNEL_ETCD="http://172.16.3.30:2379"

FLANNEL_ETCD_KEY="/atomic.io/network"

FLANNEL_OPTIONS="-iface=ens33 -public-ip=172.16.3.37 -ip-masq=true"

2.4.4.5.配置etcd中关于flannel的key在master节点执行)

etcdctl mk /atomic.io/network/config '{"Network":"172.19.0.0/16", "SubnetLen":24, "Backend":{"Type":"vxlan"}}'

2.4.4.6.启动flannel并配置开机自启

systemctl daemon-reload

systemctl enable flanneld.service

systemctl start flanneld.service

2.4.4.7.查看状态

systemctl status flanneld.service

2.5.二进制文件包及参考资料

文件链接:https://pan.baidu.com/s/1wZtoEgpQd9kWShbxbOzjlg

提取码:f2n8

参考博客:https://blog.youkuaiyun.com/ljx1528/article/details/81545187

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值