## ubuntu20.04部署k8s
> 主要步骤为:
> 1. 添加源
> 2. 添加key
> 3. 安装docker, kubelet, kubeadm
> 4. 初始化
> 5. 安装网络
### 添加源(添加阿里源,避免FQ)
执行```vim /etc/apt/sources.list.d/kubernetes.list```创建源文件,添加以下内容:
```
deb [arch=amd64] https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
```
更新apt
```bash
apt-get update
```
### 添加key(若不报```NO_PUBKEY```可跳过此步)
若执行```apt-get update```过程报这个错误:
```
The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 6A030B21BA07F4FB
```
是由于加了kubernetes源, 使用 apt-get update 命令会出现如下错误,原因是缺少相应的key,
运行以下命令,添加错误中对应的key(错误中 NO_PUBKEY后面的key的后8位):
```bash
gpg --keyserver keyserver.ubuntu.com --recv-keys BA07F4FB
```
接着运行:
```bash
gpg --export --armor E084DAB9 | sudo apt-key add -
```
如果报错```gpg: no valid OpenPGP data found```,可尝试将上条管道命令拆成2条命令执行:
```
curl -O https://packages.cloud.google.com/apt/doc/apt-key.gpg
apt-key add apt-key.gpg
```
显示```OK```则完成添加key。
接着重新更新apt
```
apt-get update
```
### 安装服务
```
apt-get install -y docker.io kubelet kubeadm kubectl
```
### 检查kubelet的cgroupDriver是否为systemd
```
cat /var/lib/kubelet/config.yaml | grep cgroup
```
如果是,修改Docker的配置```vim /etc/docker/daemon.json```:
```json
{
"exec-opts": [
"native.cgroupdriver=systemd"
]
}
```
修改保存后重启
```
systemctl daemon-reload
systemctl restart docker
systemctl restart kubelet
```
### 初始化master(这里使用阿里云的镜像,使用192.168.0.0/16,避免和宿主机的局域网的CIDR重复)
```
kubeadm init --pod-network-cidr 192.168.0.0/16 --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers
```
### 初始化成功后,给自己配置授权,授权后才可以执行kubectl命令行
```
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bashrc
source ~/.bashrc
```
### 允许pod调度到master
```
kubectl taint nodes --all node-role.kubernetes.io/master-
```
### 安装calico网络(需要几分钟)
```
mkdir -p ~/k8s/
cd ~/k8s
wget https://docs.projectcalico.org/manifests/calico.yaml
kubectl apply -f calico.yml
```
### 检查正常运行
```bash
kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master Ready control-plane,master 8m v1.23.4
```
```bash
kubectl get pod -n kube-system
NAME READY STATUS RESTARTS AGE
calico-kube-controllers-56fcbf9d6b-xvgx2 1/1 Running 0 5m15s
calico-node-q9hmf 1/1 Running 0 5m15s
coredns-64897985d-5xd75 1/1 Running 0 7m25s
coredns-64897985d-rrncl 1/1 Running 0 7m25s
etcd-k8s-ljy 1/1 Running 6 7m38s
kube-apiserver-k8s-ljy 1/1 Running 6 7m37s
kube-controller-manager-k8s-ljy 1/1 Running 2 7m37s
kube-proxy-6nb9v 1/1 Running 0 7m26s
kube-scheduler-k8s-ljy 1/1 Running 6 7m40s
```
