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