## 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
```
