目錄
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