分享

Ubuntu18.04 安装k8s

 黄爸爸好 2021-10-07

一、前期准备

准备两台 Ubuntu18.04 至少双核双线程

主机名IP说明
master192.168.20.5k8s管理节点
node192.168.20.6k8s工作节点

二、修改主机名、更新host

编辑 /etc/hostname 修改主机名。

/etc/cloud/cloud.cfg 中的 preserve_hostname: false 改为 preserve_hostname: true,否则重启后主机名仍会恢复。

master/etc/hosts 中进行如下修改:

127.0.1.1 master
192.168.20.5 master
192.168.20.6 node

node/etc/hosts 中进行如下修改:

127.0.1.1 node
192.168.20.5 master
192.168.20.6 node

安装 docker

参考:https://blog.csdn.net/k_young1997/article/details/104325159

修改 docker 驱动

/etc/docker/daemon.json 中添加:

'exec-opts': ['native.cgroupdriver=systemd']

重启 docker:

systemctl restart docker

查看 docker 驱动:

root@master:/# docker info | grep 'Cgroup Driver'
 Cgroup Driver: systemd

kubernetes 官方建议 docker 驱动采用 systemd,当然可以不修改,只是kubeadm init时会有

warning([WARNING IsDockerSystemdCheck]: detected “cgroupfs” as the Docker cgroup driver. The recommended driver is “systemd”. Please follow the guide at https:///docs/setup/cri/)

可以忽略,生产环境建议修改,因为更稳定。

备注:

以上操作需在两台主机上执行

三、关闭防火墙、swap

1.防火墙

sudo ufw disable

2.关闭 swap

Kubernetes 1.8开始要求必须禁用Swap,如果不关闭,默认配置下kubelet将无法启动。

/etc/fstab 中的这一行注释掉

/swap.img      none    swap    sw      0       0

执行

sudo swapoff -a

备注:

以上两个步骤需要在两台主机执行

四、安装 kubelet、kubeadm、kubectl

1.添加阿里源

由于国外网站访问较慢容易卡死,所以需要添加源。

/etc/apt/sources.list 中添加:

deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main

添加源的 key :

curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -

更新源:

sudo apt-get update

备注:

1.以上操作需在两台主机上执行

2.若不添加源的 key ,在更新源时会有如下报错:

Err:3 https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial InRelease
The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY 6A030B21BA07F4FB

2.开始安装

两台 服务器安装 kubelet、kubeadm、kubectl

sudo apt-get install -y kubelet kubeadm kubectl

查看版本号:

root@master:/# kubelet --version
Kubernetes v1.19.3

启动 kubelet

systemctl start kubelet

五、部署主(管理)节点

以下操作仅在 master 主机上执行

1.查看 kubernetes 所需镜像列表

获取最新版所需镜像列表

kubeadm config images list

结果:

随着不断更新,获取到的版本信息会有不同

k8s.gcr.io/kube-apiserver:v1.19.3
k8s.gcr.io/kube-controller-manager:v1.19.3
k8s.gcr.io/kube-scheduler:v1.19.3
k8s.gcr.io/kube-proxy:v1.19.3
k8s.gcr.io/pause:3.2
k8s.gcr.io/etcd:3.4.13-0
k8s.gcr.io/coredns:1.7.0

2.执行 init

kubeadm init --kubernetes-version=v1.19.3 --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16

当出现如下内容时**(要保存下来,后边有用)**,执行成功:

kubeadm join 192.168.20.5:6443 --token gmhz6l.q4zvle4gqceoy4tp     --discovery-token-ca-cert-hash sha256:bad772999ca7a8de85eb64a0fe570ae3cef92781e2e2bf9f9f6cbc793f1087f1

备注:

kubeadm init 命令默认会去 k8s.gcr.io 仓库拉取镜像,由于是国外网站基本不能拉下镜像。可以通过 --image-repository 参数指定为阿里镜像即可。

3.失败重试

若执行失败,可执行如下命令,清除执行 init 产生的垃圾

kubeadm reset
rm -rf /etc/kubernetes

4.非root用户操作 kubectl

部署成功后,如果我们想使用非root用户操作 kubectl,可以使用以下命令,这也是 kubeadm init 输出的一部分

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

六、node节点执行join

1.在node节点执行命令

kubeadm join 192.168.20.5:6443 --token blolnk.f5g0d2nf1uqmak48     --discovery-token-ca-cert-hash sha256:a7e4bee8d61d2c70f394512ea3e170a529470700ccab065125a50e58d15db1d9

备注:

该命令在执行完 init 命令后会打印出,也即 5.2 的成功标志。

2.查看节点状态

master 节点查看节点状态:

root@master:~# kubectl get nodes
NAME     STATUS     ROLES    AGE     VERSION
master   NotReady   master   50m     v1.19.3
node     NotReady   <none>   3m52s   v1.19.3

可以看到所有节点都处于 未就绪 状态。

七、搭建 flannel 网络集群

kubectl apply -f https://raw./coreos/flannel/master/Documentation/kube-flannel.yml

此时再次查看节点状态,全部已就绪:

root@master:~# kubectl get nodes
NAME     STATUS   ROLES    AGE   VERSION
master   Ready    master   79m   v1.19.3
node     Ready    <none>   33s   v1.19.3

备注:

如果出现以下报错:

Unable to connect to the server: read tcp 192.168.20.5:37246->151.101.228.133:443: read: connection reset by peer

可以安装 apt-get install ca-certificatesapt-get install ssl-cert 解决。

参考资料:

https://www.cnblogs.com/xiaoxuebiye/p/11256292.html

https://www.cnblogs.com/rainingnight/p/using-kubeadm-to-create-a-cluster-1-13.html

https://www.cnblogs.com/rainingnight/p/using-kubeadm-to-create-a-cluster.html

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多