ubuntu20.04部署k8s


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM