Ubuntu18.04 安装k8s

一、前期准备

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

主机名 IP 说明
master 192.168.20.5 k8s管理节点
node 192.168.20.6 k8s工作节点

二、修改主机名、更新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://kubernetes.io/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.githubusercontent.com/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)

相关推荐

  • Jenkins + k8s 实现企业 CI/CD 落地

    一.概述 1.1.环境介绍 我们使用的是 AWS 的 EC2 来搭建我们的集群,安装方式使用 kubeadm 来进行安装,如果使用二进制安装,可以参考我相关文档. 系统版本:ubuntu 16.04 ...

  • kubernetes1.20用containerd替换docker(shim)

    kubernetes 1.20 要去掉对 Docker的支持,具体看这里,本篇文章介绍用 containerd 替换 docker,从work节点开始,然后才到master节点. 首先查看集群 [ro ...

  • (9条消息) Ubuntu18.04安装cuda10.0,cudnn7.6.4,opencv4.2.0,python环境

    Ubuntu18.04安装cuda10.0,cudnn7.6.4,opencv4.2.0,python环境 记录一下安装踩到的坑 1.安装cuda10.0和cudnn7.6.4 2.安装opencv ...

  • Ubuntu18.04 安装 QT5.12.0

    https://blog.csdn.net/u010779035/article/details/85321603 之前在Mint18.2下安装QT5.12老是出现各种问题,觉得是不是系统不够新,就在 ...

  • Ubuntu18.04 安装 Anaconda3的教程详解

    这篇文章主要介绍了Ubuntu18.04 安装 Anaconda3的教程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 Anaconda指 ...

  • Ubuntu18.04安装ROS1(解决rosdep init问题)

    适合Unbuntu18.04的ROS安装: http://wiki.ros.org/cn/melodic/Installation/Ubuntu 跟着命令敲起来,太简单了 一般文章都要写在软件设置里面 ...

  • Ubuntu18.04安装CUDA开发工具

    我最近购入了一个TX1,然后安装系统的话是要用一个Ubuntu下 的工具安装,然后体验了一下这个工具,感觉真的很不错. 虽然是里面可以直接把主机端的开发环境安装好,但是也有毛病,后面的那个编辑器一打开 ...

  • Ubuntu18.04安装Nvidia Isaac

    对于这个机器人开发平台,大家知道不多,资料很少,所以这里我只能自己安装. 人家说,这个东西不支持 但是我不信 这个Isaac是在ROS2的基础上,加入了Nvidia大量的计算技术,是一种集大成的环境. ...

  • (48条消息) 在ubuntu18.04上安装和使用k8s集群

    一.配置虚拟机 1.官网下载VMware16 2.下载Ubuntu18.04桌面版,配置虚拟机.2核 3G 20G 3.配置root登录 https://blog.csdn.net/m0_461288 ...

  • ubuntu18.04上已有java环境下如何安装php服务(多版本)

    在继续本教程之前,请确保满足以下先决条件: 您有一个指向服务器公共IP的域名.我们将使用example.com. 您以具有sudo权限的用户身份登录. 已安装nginx版本 数据库已安装(未安装的话, ...

  • 在ubuntu18.04版本安装vscode

    方式一:图形安装 1. 在ubuntu桌面找到应用中心 2. 在软件中心中,搜索Visual Studio Code 3. 在页面中就可以直接选择安装 方式二:命令安装 1. 从vscode官网下载最 ...