离线安装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的主要内容,如果未能解决你的问题,请参考以下文章