# 使用二進制方式搭建K8S集群
## 注意
**【暫時沒有使用二進制方式搭建K8S集群,因此本章節內容不完整... 歡迎小伙伴能補充~】**
## 準備工作
在開始之前,部署Kubernetes集群機器需要滿足以下幾個條件
- 一臺或多臺機器,操作系統CentOS 7.x
- 硬件配置:2GB ,2個CPU,硬盤30GB
- 集群中所有機器之間網絡互通
- 可以訪問外網,需要拉取鏡像,如果服務器不能上網,需要提前下載鏡像導入節點
- 禁止swap分區
## 步驟
- 創建多臺虛擬機,安裝Linux系統
- 操作系統的初始化
- 為etcd 和 apiserver 自簽證書
- 部署etcd集群
- 部署master組件【安裝docker、kube-apiserver、kube-controller-manager、kube-scheduler、etcd】
- 部署node組件【安裝kubelet、kube-proxy、docker、etcd】
- 部署集群網絡
## 準備虛擬機
首先我們準備了兩臺虛擬機,來進行安裝測試
| 主機名 | ip |
| ------------ | --------------- |
| k8s_2_master | 192.168.177.140 |
| k8s_2_node | 192.168.177.141 |
## 操作系統的初始化
然后我們需要進行一些系列的初始化操作
```bash
# 關閉防火墻
systemctl stop firewalld
systemctl disable firewalld
# 關閉selinux
# 永久關閉
sed -i 's/enforcing/disabled/' /etc/selinux/config
# 臨時關閉
setenforce 0
# 關閉swap
# 臨時
swapoff -a
# 永久關閉
sed -ri 's/.*swap.*/#&/' /etc/fstab
# 根據規劃設置主機名【master節點上操作】
hostnamectl set-hostname k8s_2_master
# 根據規劃設置主機名【node1節點操作】
hostnamectl set-hostname k8s_2_node1
# 在master添加hosts
cat >> /etc/hosts << EOF
192.168.177.140 k8s_2_master
192.168.177.141 k8s_2_node1
EOF
# 將橋接的IPv4流量傳遞到iptables的鏈
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
# 生效
sysctl --system
# 時間同步
yum install ntpdate -y
ntpdate time.windows.com
```
## 部署Etcd集群
Etcd是一個分布式鍵值存儲系統,Kubernetes使用Etcd進行數據存儲,所以先準備一個Etcd數據庫,為了解決Etcd單點故障,應采用集群方式部署,這里使用3臺組建集群,可容忍一臺機器故障,當然也可以使用5臺組件集群,可以容忍2臺機器故障
### 自簽證書
提到證書,我們想到的就是下面這個情況

這個https證書,其實就是服務器頒發給網站的,代表這是一個安全可信任的網站。
而在我們K8S集群的內部,其實也是有證書的,如果不帶證書,那么訪問就會受限

同時在集群內部 和 外部的訪問,我們也需要簽發證書

如果我們使用二進制的方式,那么就需要自己手動簽發證書。
自簽證書:我們可以想象成在一家公司上班,然后會頒發一個門禁卡,同時一般門禁卡有兩種,一個是內部員工的門禁卡,和外部訪客門禁卡。這兩種門禁卡的權限可能不同,員工的門禁卡可以進入公司的任何地方,而訪客的門禁卡是受限的,這個門禁卡其實就是自簽證書

### 準備cfssl證書生成工具
cfssl是一個開源的證書管理工具,使用json文件生成證書,相比openssl 更方便使用。找任意一臺服務器操作,這里用Master節點。
```bash
wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64
chmod +x cfssl_linux-amd64 cfssljson_linux-amd64 cfssl-certinfo_linux-amd64
mv cfssl_linux-amd64 /usr/local/bin/cfssl
mv cfssljson_linux-amd64 /usr/local/bin/cfssljson
mv cfssl-certinfo_linux-amd64 /usr/bin/cfssl-certinfo
```
- Kubernetes簡介
- 搭建K8S集群前置知識
- 使用kubeadm方式搭建K8S集群
- 使用二進制方式搭建K8S集群
- Kubeadm和二進制方式對比
- Kubernetes集群管理工具kubectl
- Kubernetes集群YAML文件詳解
- Kubernetes核心技術Pod
- Kubernetes核心技術Controller
- Kubernetes核心技術Service
- Kubernetes控制器Controller詳解
- Kubernetes配置管理
- Kubernetes集群安全機制
- Kubernetes核心技術Ingress
- Kubernetes核心技術Helm
- Kubernetes持久化存儲
- Kubernetes集群資源監控
- Kubernetes搭建高可用集群
- Kubernetes容器交付介紹
- 使用kubeadm-ha腳本一鍵安裝K8S
- Kubernetes可視化界面kubesphere
- Kubernetes配置默認存儲類
- 使用Rancher搭建Kubernetes集群
- Kubernetes中的CRI