原文鏈接https://blog.csdn.net/chen798213337/article/details/78501042/
Kubernetes在CentOS7下二進制文件方式安裝、離線安裝
一、下載Kubernetes(簡稱K8S)二進制文件
1)https://github.com/kubernetes/kubernetes/releases
從上邊的網址中選擇相應的版本,本文以1.9.1版本爲例,從 CHANGELOG頁面 下載二進制文件。
2)組件選擇:選擇Service Binaries中的kubernetes-server-linux-amd64.tar.gz
該文件已經包含了 K8S所需要的全部組件,無需單獨下載Client等組件。
二、安裝規劃
1)下載K8S解壓,把每個組件依次複製到/usr/bin目錄文件下,然後創建systemd服務文見,最後啓動該組件
3) 本例:以三個節點爲例。具體節點安裝組件如下
節點IP地址 | 角色 | 安裝組件名稱 |
---|---|---|
192.168.137.3 | Master(管理節點) | etcd、kube-apiserver、kube-controller-manager、kube-scheduler |
192.168.137.4 | Node1(計算節點) | docker 、kubelet、kube-proxy |
192.168.137.5 | Node2(計算節點) | docker 、kubelet、kube-proxy |
其中etcd爲K8S數據庫
三、Master節點部署
注意:在CentOS7系統 以二進制文件部署,所有組件都需要4個步驟:
1)複製對應的二進制文件到/usr/bin目錄下
2)創建systemd service啓動服務文件
3)創建service 中對應的配置參數文件
4)將該應用加入到開機自啓
1 etcd數據庫安裝
(1) ectd數據庫安裝
下載:K8S需要etcd作爲數據庫。以 v3.2.9爲例,下載地址如下:
https://github.com/coreos/etcd/releases/
下載解壓後將etcd、etcdctl二進制文件複製到/usr/bin目錄
(2)設置 etcd.service服務文件
在/etc/systemd/system/目錄裏創建etcd.service,其內容如下:
[root@k8s-master]# cat /etc/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爲etcd數據庫目錄,需要在etcd**安裝前創建**
(3)創建配置/etc/etcd/etcd.conf文件
[root@k8s-master]# cat /etc/etcd/etcd.conf
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://192.168.137.3:2379"
(4)配置開機啓動
#systemctl daemon-reload
#systemctl enable etcd.service
#systemctl start etcd.service
(5)檢驗etcd是否安裝成功
# etcdctl cluster-health
\member 8e9e05c52164694d is healthy: got healthy result from http://localhost:2379
2 kube-apiserver服務
(1)複製二進制文件到/usr/bin目錄
將kube-apiserver、kube-controller-manger、kube-scheduler 三個可執行文件複製到/usr/bin目錄
(2)新建並編輯/kube-apiserver.service 文件
[root@k8s-master]#cat /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
[root@k8s-master]#cat /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://192.168.137.5: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=" "
3 kube-controller-manger部署
(1)配置kube-controller-manager systemd 文件服務
命令內容如下:
[root@k8s-master]#cat /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
2)配置參數文件 /etc/kubernetes/controller-manager 內容如下:
[root@k8s-master]#cat /etc/kubernetes/controller-manager \
KUBE_MASTER="--master=http://192.168.137.5:8080"
KUBE_CONTROLLER_MANAGER_ARGS=" "
4 kube-scheduler組件部署
(1)配置kube-scheduler systemd服務文件
[root@k8s-master]#cat /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
(2)配置/etc/kubernetes/scheduler參數文件
[root@k8s-master]#cat /etc/kubernetes/scheduler
KUBE_MASTER="--master=http://192.168.137.5:8080"
KUBE_SCHEDULER_ARGS="--logtostderr=true --log-dir=/home/k8s-t/log/kubernetes --v=2"
5 將各組件加入開機自啓
(1)命令如下:
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