[TOC]
## **一、前置条件**
* 准备两台主机:master:192.168.2.101, node:192.168.2.102
* 两台主机已安装好kubeadm、kubelet、kubectl、docker;
## **二、安装Master**
#### **2.1初始化Master**
```
$ kubeadm init --kubernetes-version v1.17.3 --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr 172.26.0.0/16
...
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 192.168.2.101:6443 --token uq0q6m.2hzh55l00usfq7a6 \
--discovery-token-ca-cert-hash sha256:6e14b72685f492206fabfe4417f29f5c2a0b13ce912ca2a4f568679b03e9a868
```
#### **2.2 为当前用户配置kubeconfig**
为了让当前用户能使用kubectl命令,执行以下命令
```
$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
```
#### **2.3 安装网络插件**
这里我们使用calico网络插件,下载 [calico.yaml](https://docs.projectcalico.org/v3.8/manifests/calico.yaml) 文件,然后将里面的`192.168.0.0/16`更改为上面的`172.26.0.0/16`(此次实验发现没有更改的话,Pod的IP就是192.168的),然后执行以下命令安装calico
```
$ kubectl apply -f calico.yaml
```
#### **2.4 验证Master节点**
```
$ kubectl get node
NAME STATUS ROLES AGE VERSION
peng01 Ready master 3m37s v1.17.3
```
## **三、安装Node**
#### **3.1 获取Token**
在master上执行以下命令,获取bootstrap token,输出如下:
```
$ kubeadm token list
TOKEN TTL EXPIRES USAGES DESCRIPTION EXTRA GROUPS
uq0q6m.2hzh55l00usfq7a6 23h 2020-07-10T16:34:37+08:00 authentication,signing The default bootstrap token generated by 'kubeadm init'. system:bootstrappers:kubeadm:default-node-token
```
我们发现这个token还没有过期,可以直接使用。如果token已经过期了或者没有了token,则可以使用下面的命令创建一个
```
$ kubeadm token create
h5agml.npsrmev7t4s2j3m6
```
然后查看,发现有两个token,它们都是可以使用的
```
$ kubeadm token list
TOKEN TTL EXPIRES USAGES DESCRIPTION EXTRA GROUPS
h5agml.npsrmev7t4s2j3m6 23h 2020-07-10T16:58:32+08:00 authentication,signing <none> system:bootstrappers:kubeadm:default-node-token
uq0q6m.2hzh55l00usfq7a6 23h 2020-07-10T16:34:37+08:00 authentication,signing The default bootstrap token generated by 'kubeadm init'. system:bootstrappers:kubeadm:default-node-token
```
#### **3.3 加入集群**
在master上执行以下命令获取`--discovery-token-ca-cert-hash`,输出如下,这个hash值是一直不会变的
```
$ openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
6e14b72685f492206fabfe4417f29f5c2a0b13ce912ca2a4f568679b03e9a868
```
然后使用上面两个token的任意一个,执行以下命令将Node加入到集群中
```
$ kubeadm join 192.168.2.101:6443 --token uq0q6m.2hzh55l00usfq7a6 \
--discovery-token-ca-cert-hash sha256:6e14b72685f492206fabfe4417f29f5c2a0b13ce912ca2a4f568679b03e9a868
```
#### **3.4 查看Node**
```
$ kubectl get node
NAME STATUS ROLES AGE VERSION
peng01 Ready master 28m v1.25.5
peng02 Ready <none> 27s v1.25.5
```
## **四、去掉Master节点的污点**
默认情况下,master节点上有一个污点,我们需要去掉这个污点,使用Pod能正常调度到master节点上。执行以下命令:
```
$ kubectl taint node --all node-role.kubernetes.io/master-
```
- 常用命令
- 安装
- 安装Kubeadm
- 安装单Master集群
- 安装高可用集群(手动分发证书)
- 安装高可用集群(自动分发证书)
- 启动参数解析
- certificate-key
- ETCD相关参数
- Kubernetes端口汇总
- 安装IPv4-IPv6双栈集群
- 下载二进制文件
- 使用Kata容器
- 快速安装shell脚本
- 存储
- 实践
- Ceph-RBD实践
- CephFS实践
- 对象存储
- 阿里云CSI
- CSI
- 安全
- 认证与授权
- 认证
- 认证-实践
- 授权
- ServiceAccount
- NodeAuthorizor
- TLS bootstrapping
- Kubelet的认证
- 准入控制
- 准入控制示例
- Pod安全上下文
- Selinux-Seccomp-Capabilities
- 给容器配置安全上下文
- PodSecurityPolicy
- K8S-1.8手动开启认证与授权
- Helm
- Helm命令
- Chart
- 快速入门
- 内置对象
- 模板函数与管道
- 模板函数列表
- 流程控制
- Chart依赖
- Repository
- 开源的Chart包
- CRD
- CRD入门
- 工作负载
- Pod
- Pod的重启策略
- Container
- 探针
- 工作负载的状态
- 有状态服务
- 网络插件
- Multus
- Calico+Flannel
- 容器网络限速
- 自研网络插件
- 设计文档
- Cilium
- 安装Cilium
- Calico
- Calico-FAQ
- IPAM
- Whereabouts
- 控制平面与Pod网络分开
- 重新编译
- 编译kubeadm
- 编译kubeadm-1.23
- 资源预留
- 资源预留简介
- imagefs与nodefs
- 资源预留 vs 驱逐 vs OOM
- 负载均衡
- 灰度与蓝绿
- Ingress的TLS
- 多个NginxIngressController实例
- Service的会话亲和
- CNI实践
- CNI规范
- 使用cnitool模拟调用
- CNI快速入门
- 性能测试
- 性能测试简介
- 制作kubemark镜像
- 使用clusterloader2进行性能测试
- 编译clusterloader2二进制文件
- 搭建性能测试环境
- 运行density测试
- 运行load测试
- 参数调优
- Measurement
- TestMetrics
- EtcdMetrics
- SLOMeasurement
- PrometheusMeasurement
- APIResponsivenessPrometheus
- PodStartupLatency
- FAQ
- 调度
- 亲和性与反亲和性
- GPU
- HPA
- 命名规范
- 可信云认证
- 磁盘限速
- Virtual-kubelet
- VK思路整理
- Kubebuilder
- FAQ
- 阿里云日志服务SLS