离线安装k8s的node

Posted muzizongheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了离线安装k8s的node相关的知识,希望对你有一定的参考价值。

目录

1.从k8s的github上下载最新版本的安装包。https://github.com/kubernetes/kubernetes/releases

2.通过winscp把windows上的下载的安装包copy到centos虚拟机上

3.更改各虚拟机的hostname, 比如一个为k8s-node1:hostnamectl set-hostname k8s-node1

4.假设etcd和kube-apiserver的ip都是:10.6.119.106, node1的ip为10.6.119.107

5.利用tar -xvzf命令解压后, 把kube-proxy和kubelet复制到/usr/local/bin/下。  如:

6.在/usr/lib/systemd/system目录下创建kube-proxy.service,内容如下:

7. 在/etc/下创建/etc/kube-node/, 然后创建配置/etc/kube-node/kube-proxy.conf文件

8.在/var/lib下创建/var/lib/kube-node

9.在/etc/kube-node/, 然后创建配置/etc/kube-node/kube-node.conf文件

10.重复6-8, 建立kubelet的service和conf文件。

11. 启动kubelet.service 和kube-proxy.service

12. 如果出错,查看服务的错误日志,去/var/log/message

13. 如果出现 connect: no route to host, 可能是防火墙问题。 可以安装telnet, 用telnet ip port测试下。

14. 安装成功后可以在k8s master上去看下k8s node是否注册成功。 具体使用kubectl get nodes


 

1.从k8s的github上下载最新版本的安装包。https://github.com/kubernetes/kubernetes/releases

2.通过winscp把windows上的下载的安装包copy到centos虚拟机上

3.更改各虚拟机的hostname, 比如一个为k8s-node1:hostnamectl set-hostname k8s-node1

4.假设etcd和kube-apiserver的ip都是:10.6.119.106, node1的ip为10.6.119.107

5.利用tar -xvzf命令解压后, 把kube-proxy和kubelet复制到/usr/local/bin/下。  如:

mv /root/Downloads/kubernetes/node/bin/kube-proxy /usr/local/bin/kube-proxy

mv /root/Downloads/kubernetes/node/bin/kubelet /usr/local/bin/kubelet

 

6.在/usr/lib/systemd/system目录下创建kube-proxy.service,内容如下:

[Unit]

Description=Kubernetes Kube-Proxy Service

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

After=network.target

[Service]

WorkingDirectory=/var/lib/kube-node/

EnvironmentFile=-/etc/kube-node/kube-node.conf

EnvironmentFile=-/etc/kube-node/kube-proxy.conf

ExecStart=/usr/local/bin/kube-proxy   $KUBE_LOGTOSTDERR $KUBE_LOG_LEVEL  $KUBE_MASTER $KUBE_PROXY_ARGS

Restart=on-failure

LimitNOFILE=65536

[Install]

WantedBy=multi-user.target

 

7. 在/etc/下创建/etc/kube-node/, 然后创建配置/etc/kube-node/kube-proxy.conf文件

KUBE_PROXY_ARGS=""

 

8.在/var/lib下创建/var/lib/kube-node

 

9.在/etc/kube-node/, 然后创建配置/etc/kube-node/kube-node.conf文件

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://10.6.119.106:8080"

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

 

 

10.重复6-8, 建立kubelet的service和conf文件。

kubelet.service 如下:

[Unit]

Description=Kubernetes Kubelet Server

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

After=docker.service

Requires=docker.service

[Service]

WorkingDirectory=/var/lib/kube-node/

EnvironmentFile=-/etc/kube-node/kubelet.conf

ExecStart=/usr/local/bin/kubelet $KUBELET_ARGS

Restart=on-failure

KillMode=process

[Install]

WantedBy=multi-user.target

 

kubelet.conf 如下:

#node 本机ip

KUBELET_HOSTNAME="--hostname-override=10.6.119.107"

#docker 仓库的地址

KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=10.6.119.106/harbor/pod-infrastructure:latest"

KUBELET_ARGS="--enable-server=true --enable-debugging-handlers=true  --fail-swap-on=false --kubeconfig=/etc/kube-node/kubeconfig"

 

上面kubelet.conf引用的kubeconfig文件的内容如下:

apiVersion: v1

kind: Config

users:

- name: kubelet

clusters:

- name: kubernetes

  cluster:

    server: http://10.6.119.106:8080

contexts:

- context:

    cluster: kubernetes

    user: kubelet

  name: service-account-context

current-context: service-account-context

 

 

 

11. 启动kubelet.service 和kube-proxy.service

systemctl daemon-reload

systemctl enable kube-proxy.service

systemctl start kube-proxy.service

systemctl enable kubelet.service

systemctl start kubelet.service

 

12. 如果出错,查看服务的错误日志,去/var/log/message

 

13. 如果出现 connect: no route to host, 可能是防火墙问题。 可以安装telnet, 用telnet ip port测试下。

解决办法是:清除防火墙规则:iptables -F

 

或者把8080加到防火墙规则里

firewall-cmd --zone=public --add-port=8080/tcp --permanent

 

14. 安装成功后可以在k8s master上去看下k8s node是否注册成功。 具体使用kubectl get nodes

[root@k8s-master ~]# kubectl get nodes

NAME        STATUS   ROLES    AGE   VERSION

k8s-node1   Ready    <none>   16h   v1.17.4

 

调试和离线文件参考:https://blog.csdn.net/muzizongheng/article/details/105067876

以上是关于离线安装k8s的node的主要内容,如果未能解决你的问题,请参考以下文章

k8s 二进制部署之 node 安装 docker

3-Kubernetes入门之CentOS上安装部署k8s集群

手工离线部署k8s(v1.9)

centos7 kubeadm部署单机k8s

使用sealos4安装k8s集群

使用kubeadm离线下载k8s安装镜像