2021-11-18 周4
## 安裝前環境準備及說明
1. 服務器資源
| 機器 | IP | OS | 資源 |
| ------- | ----------------- | --------------------------------------------- | --------- |
| master | 172.31.1.100 | CentOS Linux release 7.9.2009 (Core) | 2C4G |
| node1 | 172.30.1.100 | CentOS Linux release 7.5.1804 (Core) | 1C2G |
***以上環境為個人學習環境,企業生產環境建議最低配置在8C16G master且master高可用,至少2臺8C16G的工作節點***
2. 服務器環境準備
- 關閉防火墻和swap
``` bash
systemctl stop firewalld
setenforce 0
```
``` bash
# 臨時關閉
swapoff -a ? ?
# 永久關閉,注釋掉swap配置行,重啟reboot
vim /etc/fstab
```
- 網絡相通
在服務器配置hosts,讓機器間能通過主機名訪問。
```
[root@node1 ~]# cat /etc/hosts
172.31.1.100 master
172.30.1.100 node1
```
```
[root@master ~]# ping node1
PING node1 (172.30.1.100) 56(84) bytes of data.
64 bytes from node1 (172.30.1.100): icmp_seq=1 ttl=64 time=1.72 ms
64 bytes from node1 (172.30.1.100): icmp_seq=2 ttl=64 time=1.66 ms
```
```
[root@node1 ~]# ping master
PING master (172.31.1.100) 56(84) bytes of data.
64 bytes from master (172.31.1.100): icmp_seq=1 ttl=64 time=1.72 ms
64 bytes from master (172.31.1.100): icmp_seq=2 ttl=64 time=1.69 ms
```
- 將橋接的IPV4流量傳遞到iptables 的鏈
``` bash
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
```
2. 安裝容器環境docker
``` bash
# 獲取阿里云的docker源
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O/etc/yum.repos.d/docker-ce.repo
# yum 安裝docker
yum -y install docker-ce
# 設置開機自啟動
systemctl enable docker
systemctl start docker
# 查看docker版本
docker --version
Docker version 20.10.7, build f0df350
```
3. 安裝kubelet環境,及工具kubectl和kubeadm
首先安裝kubernetes環境,`kubelet`,然后安裝命令行工具`kubectl`,再安裝k8s集群安裝工具`kubeadm`(還有其他的安裝工具,如`minikube`等)
- 安裝kubelet
先引入阿里云的kubernetes的repo
``` bash
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
```
然后執行安裝命令(不指定版本會默認安裝最新版本)
``` bash
yum install -y kubelet kubectl kubeadm
```
安裝完成后,設置開機自啟動 `kubelet`
``` bash
systemctl enable kubelet
```
## 開始安裝k8s集群
### master節點安裝
- 在master機器上使用`kubeadm init`初始化集群
其中使用阿里云的鏡像倉庫,不然下載鏡像會很慢。
``` bash
kubeadm init --apiserver-advertise-address=172.31.1.100 --image-repository=registry.aliyuncs.com/google\_containers --pod-network-cidr=10.244.0.0/16 --kubernetes-version=v1.21.0
```
當出現如下輸出,說明初始化成功!

按要求執行第一個紅框中的3條命令后,執行`kubectl get nodes`
```
[root@master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master NotReady control-plane,master 13d v1.21.1
```
到這里master節點就部署完成了。(目前是單節點,master也能做集群,使其高可用)
**如果status是Not Ready,后面會安裝網絡組建,等幾分鐘就會變成Ready了**
### node1節點加入集群
- 在node1節點上使用`kubeadm join`命令加入k8s集群
``` bash
kubeadm join 172.31.1.100:6443 --token 4ex7v0.micj5oc8pd9ldnj8 \\
\--discovery-token-ca-cert-hash sha256:57dd07de79741f66e29ae4371618ffa100e7dcc9272689a92708aef69ef1e157
```
如果出現如下輸出,恭喜你node節點部署成功。
``` bash
This node has joined the cluster:
Certificate signing request was sent to apiserver and a response was received.
The Kubelet was informed of the new secure connection details.
Run 'kubectl get nodes' on the control-plane to see this node join the cluster.
```
### 網絡組件的安裝
k8s內部資源間的通信,是通過自己的網絡組件實現的。而k8s網絡組建有多種實現,如`flannel`和`calico`等。(網絡組件安裝一種即可,推薦calico。)
- 安裝calico網絡組件
獲取calico.yaml資源文件
```
wget https://docs.projectcalico.org/v3.10/getting-started/kubernetes/installation/hosted/kubernetes-datastore/calico-networking/1.7/calico.yaml
```
修改IP配置
``` bash
## 將192.168.0.0/16修改ip地址為10.244.0.0/16
sed -i 's/192.168.0.0/10.244.0.0/g' calico.yaml
```
安裝calico到k8s中
``` bash
kubectl apply -f calico.yaml
```
安裝完成后,查看集群狀態,都是Ready,到此k8s集群安裝成功。
``` bash
[root@master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master Ready control-plane,master 13d v1.21.1
node1 Ready <none> 13d v1.21.1
```
- Redis來回摩擦
- redis的數據結構SDS和DICT
- redis的持久化和事件模型
- Java
- 從何而來之Java IO
- 發布Jar包到公共Maven倉庫
- Java本地方法調用
- 面試突擊
- Linux
- Nginx
- SpringBoot
- Springboot集成Actuator和SpringbootAdminServer監控
- SpringCloud
- Spring Cloud初識
- Spring Cloud的5大核心組件
- Spring Cloud的注冊中心
- Spring Cloud注冊中心之Eureka
- Spring Cloud注冊中心之Consul
- Spring Cloud注冊中心之Nacos
- Spring Cloud的負載均衡之Ribbon
- Spring Cloud的服務調用之Feign
- Spring Cloud的熔斷器
- Spring Cloud熔斷器之Hystrix
- Spring Cloud的熔斷器監控
- Spring Cloud的網關
- Spring Cloud的網關之Zuul
- Spring Cloud的配置中心
- Spring Cloud配置中心之Config Server
- Spring Cloud Config配置刷新
- Spring Cloud的鏈路跟蹤
- Spring Cloud的鏈路監控之Sleuth
- Spring Cloud的鏈路監控之Zipkin
- Spring Cloud集成Admin Server
- Docker
- docker日常基本使用
- docker-machine的基本使用
- Kubernetes
- kubernetes初識
- kubeadm安裝k8s集群
- minikube安裝k8s集群
- k8s的命令行管理工具
- k8s的web管理工具
- k8s的相關發行版
- k3s初識及安裝
- rancher的安裝及使用
- RaspberryPi
- 運維
- 域名證書更新
- 騰訊云主機組建內網
- IDEA插件開發
- 第一個IDEA插件hello ide開發
- 千呼萬喚始出來的IDEA筆記插件mdNote
- 大剛學算法
- 待整理
- 一些概念和知識點
- 位運算
- 數據結構
- 字符串和數組
- LC242-有效的字母異位詞
- 鏈表
- LC25-K個一組翻轉鏈表
- LC83-刪除有序單鏈表重復的元素
- 棧
- LC20-有效的括號
- 隊列
- 雙端隊列
- 優先隊列
- 樹
- 二叉樹
- 二叉樹的遍歷
- 二叉樹的遞歸序
- 二叉樹的前序遍歷(遞歸)
- 二叉樹的前序遍歷(非遞歸)
- 二叉樹的中序遍歷(遞歸)
- 二叉樹的中序遍歷(非遞歸)
- 二叉樹的后序遍歷(遞歸)
- 二叉樹的后序遍歷(非遞歸)
- 二叉樹的廣度優先遍歷(BFS)
- 平衡二叉樹
- 二叉搜索樹
- 滿二叉樹
- 完全二叉樹
- 二叉樹的打印(二維數組)
- 樹的序列化和反序列化
- 前綴樹
- 堆
- Java系統堆優先隊列
- 集合數組實現堆
- 圖
- 圖的定義
- 圖的存儲方式
- 圖的Java數據結構(鄰接表)
- 圖的表達方式及對應場景創建
- 圖的遍歷
- 圖的拓撲排序
- 圖的最小生成樹之Prim算法
- 圖的最小生成樹之Kruskal算法
- 圖的最小單元路徑之Dijkstra算法
- 位圖
- Java實現位圖
- 并查集
- Java實現并查集
- 滑動窗口
- 單調棧
- 排序
- 冒泡排序BubbleSort
- 選擇排序SelectSort
- 插入排序InsertSort
- 插入排序InsertXSort
- 歸并排序MergeSort
- 快速排序QuickSort
- 快速排序優化版QuickFastSort
- 堆排序HeapSort
- 哈希Hash
- 哈希函數
- guava中的hash函數
- hutool中的hash函數
- 哈希表實現
- Java之HashMap的實現
- Java之HashSet的實現
- 一致性哈希算法
- 經典問題
- 荷蘭國旗問題
- KMP算法
- Manacher算法
- Go