前言

本文介绍如何在ubuntu上部署k8s集群,大致可以分为如下几个步骤

  1. 修改ubuntu配置
  2. 安装docker
  3. 安装kubeadm、kubectl以及kubelet
  4. 配置master节点
  5. 将slave节点加入网络

因为k8s分为管理节点和工作节点,所以我们将要 在master上部署管理节点,在worker上部署工作节点,master和worker节点信息如下

主机名:master,主机IP:192.168.56.11,版本:Ubuntu server 18.04,CPU:2核,内存:1G
主机名:worker,主机IP:192.168.56.21,版本:Ubuntu server 18.04,CPU:2核,内存:1G

要安装的软件版本及名称

软件名 版本
docker 18.09.7
kubectl 1.15.0-00 amd64
kubeadm 1.15.0-00 amd64
kubelet 1.15.0-00 amd64

一.修改 ubuntu 配置

首先,k8s 要求我们的 ubuntu 进行一些符合它要求的配置。很简单,包括以下两步:关闭 Swap 内存 以及 配置免密登录,这一步两台主机都需要进行配置

关闭 swap 内存

执行如下命令关闭swap内存

swapoff -a

配置免密登录

更新中

二.安装docker

docker 是 k8s 的基础,在安装完成之后也需要修改一些配置来适配 k8s ,所以我们分为 docker 的安装 与 docker 的配置 两部分。这一步两台主机都需要进行安装

docker 的安装

docker的安装再简单不过,执行下面命令进行安装

sudo apt install docker.io

等安装完成之后使用docker --version来验证 docker是否可用

docker --version

docker 的配置

kubernetes默认设置cgroup驱动(cgroupdriver)为"systemd",而docker服务的cgroup驱动默认为"cgroupfs",建议将其修改为"systemd",与kubernetes保持一致,可以通过修改docker的/etc/docker/daemon.js文件进行设置,如下结果

然后通过systemctl restart docker命令重启docker让配置生效

三.安装kubeadm、kubectl以及kubelet

安装完了 docker 就可以下载 k8s 的三个主要组件kubelet、kubeadm以及kubectl。这一步两台主机都需要进行安装。先来简单介绍一下这三者

  • kubelet: k8s 的核心服务
  • kubeadm: 这个是用于快速安装 k8s 的一个集成工具,我们在master1和worker1上的 k8s 部署都将使用它来完成。
  • kubectl: k8s 的命令行工具,部署完成之后后续的操作都要用它来执行

其实这三个的下载很简单,直接用apt-get就好了,但是因为某些原因,它们的下载地址不存在了。所以我们需要用国内的镜像站来下载,也很简单,依次执行下面五条命令即可
1.使得 apt 支持 ssl 传输

apt-get update && apt-get install -y apt-transport-https

2.下载 gpg 密钥

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

3.添加 k8s 镜像源

cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF

4.更新源列表

apt-get update

5.安装 kubectl,kubeadm以及 kubelet

apt-get install -y kubelet kubeadm kubectl

直接在/etc/apt/sources.list里添加https://mirrors.aliyun.com/kubernetes/apt/是不行的,因为这个阿里镜像站使用的ssl进行传输的,所以要先安装apt-transport-https并下载镜像站的密钥才可以进行下载

6.运行systemctl start命令启动kubelet服务,并设置为开机自动启动

root@master01:/app# systemctl start kubelet
root@master01:/app# systemctl enable kubelet

四. 配置master 节点

1.系统配置预检查

在安装之前需要注意,kubeadm init 命令在执行具体的安装过程之前,会做一系列的系统预检查,以确保主机环境符合安装要求,如果检查失败,就直接终止,不在进行init操作。因此我们可以通过kubeadm init phase preflight命令执行预检查操作,确保系统就绪后再进行init操作,如果检查结果提示我的CPU和内存小于最低要求。

2.准备镜像

为了加快kubeadm创建集群的过程,可以预先将所有镜像下载完成。可以通过kubeadm config images list命令查看所需要的镜像列表

root@master01:/app# kubeadm config images list
k8s.gcr.io/kube-apiserver:v1.23.5
k8s.gcr.io/kube-controller-manager:v1.23.5
k8s.gcr.io/kube-scheduler:v1.23.5
k8s.gcr.io/kube-proxy:v1.23.5
k8s.gcr.io/pause:3.6
k8s.gcr.io/etcd:3.5.1-0
k8s.gcr.io/coredns/coredns:v1.8.6

因为初始化master节点时,执行命令 kubeadm init 要下载k8s.gcr.io的docker镜像,但是国内连不上k8s.gcr.io,因此我们可以从阿里云先下载kubeadm需要的镜像,执行如下下载命令

root@master01:/app# kubeadm config images pull --image-repository=registry.aliyuncs.com/google_containers

下载完成后,通过docker images就可以在本地查看到如下镜像

然后通过docker tag重命名上面的镜像,结果如下

root@master01:/app# docker tag registry.aliyuncs.com/google_containers/kube-apiserver:v1.23.5 k8s.gcr.io/kube-apiserver:v1.23.5

3.配置master节点

准备工作完成后,就可以运行kubeadm init 命令配置master节点了

root@master01:/app# kubeadm init --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=192.168.0.0/16

配置项说明:
--apiserver-advertise-address k8s 中服务apiserver的部署地址,如果不填写,默认是本机
--image-repository 拉取的 docker 镜像源,因为初始化的时候kubeadm会去拉 k8s 的很多组件来进行部署,所以需要指定国内镜像源,下不然会拉取不到镜像
--pod-network-cidr k8s 采用的节点网络,因为我们将要使用flannel作为 k8s 的网络,所以这里填192.168.0.0/16就好
--kubernetes-version: 这个是用来指定你要部署的 k8s 版本的,一般不用填,不过如果初始化过程中出现了因为版本不对导致的安装错误的话,可以用这个参数手动指定

安装成功后,可看到如下的提示信息

Your Kubernetes control-plane has initialized successfully!To start using your cluster, you need to run the following as a regular user:mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/configAlternatively, if you are the root user, you can run:export KUBECONFIG=/etc/kubernetes/admin.confYou should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:https://kubernetes.io/docs/concepts/cluster-administration/addons/Then you can join any number of worker nodes by running the following on each as root:kubeadm join 192.168.130.239:6443 --token 6k1i68.aml4dfgyfqwcezkp \--discovery-token-ca-cert-hash sha256:85eedec31c61177648373d4c7a8a547aa0e0a0816fe91601a99352c84d9545f0

4.配置 kubectl 工具

由于kubeadm默认使用CA证书,所以需要为kubectl配置证书才能访问master.
安装安装成功的提示,非root用户可以将admin.conf配置文件复制到HOME目录的.kube子目录下,命令如下:

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

如果是root用户,也可以通过设置环境变量KUBECONFIG完成kubectl的配置

export KUBECONFIG=/etc/kubernetes/admin.conf

设置完成后,可以使用kubectl命令行工具对kubernetes集群进行访问和操作了

# 查看已加入的节点
kubectl get nodes
# 查看集群状态
kubectl get cs

Ubuntu 安装k8s集群相关推荐

  1. 使用KubeKey安装K8S集群

    KubeKey [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9a5Ji2nE-1625797190511)(https://github.com/kubesphere ...

  2. Blazor+Dapr+K8s微服务之基于WSL安装K8s集群并部署微服务

     前面文章已经演示过,将我们的示例微服务程序DaprTest1部署到k8s上并运行.当时用的k8s是Docker for desktop 自带的k8s,只要在Docker for desktop中启用 ...

  3. 使用sealos安装K8S集群时,需确保节点的swap是关闭的

    使用sealos安装K8S集群时,需确保节点的swap是关闭的,否则会安装失败

  4. yum安装k8s集群(单master两个node、阿里云镜像源)

    yum安装k8s集群(单master节点方式) 一.环境准备 1.系统要求 按量付费阿里云主机三台 要求:centos7.6~7.8:以下为 https://kuboard.cn/install/in ...

  5. [提示]普通用户使用sealos安装k8s集群的话,默认还是会装到root用户的home目录/root

    如果使用普通用户,使用sealos安装k8s集群的话,默认还是会装到root用户的home目录/root kubeadm init --config=/root/kubeadm-config.yaml ...

  6. k8s 安装_二进制安装k8s集群总结

    在之前文章里我们以学习为目的介绍了k8s集群的手动二进制安装,包括: ssl证书制作. docker的安装. 网络通讯组件flannel的安装. K8s基础组件的安装(etcd,master组件api ...

  7. 使用kubeadm安装k8s集群故障处理三则

    最近在作安装k8s集群,测试了几种方法,最终觉得用kubeadm应该最规范. 限于公司特别的网络情况,其安装比网上不能访问google的情况还要艰难. 慢慢积累经验吧. 今天遇到的三则故障记下来作参考 ...

  8. (亲测无坑)Centos7.x使用kubeadm安装K8s集群1.15.0版本

    基础环境配置 三台Centos7.x的服务器,主节点 cpu >=2,node节点>=1 注:(上述cpu为最低配置,否则集群安装部署会报错,无法启动,对其他硬件无硬性要求) 以下操作若无 ...

  9. 从零开始离线安装k8s集群

    本文主要用于在内网(离线)环境安装k8s集群:linux环境 centos7.6 主要步骤有: 安装docker 创建dokcer 私有镜像库 registry 安装kubernetes 安装flan ...

最新文章

  1. 特征变换(3)小波变换
  2. TCP keepAlive详解(TCP心跳包)
  3. Linux内核--网络栈实现分析(三)--驱动程序层+链路层(上)
  4. Android + Eclipse + PhoneGap 2.9.0 安卓最新环境配置,部分资料整合网上资料,已成功安装....
  5. lisp6 暖通cad_(完整版)暖通CAD设计技巧1
  6. bitcount方法详解_Java Long类的bitCount()方法和示例
  7. pdd本质上来说,没有什么壁垒
  8. Android - 返回上一个界面finish()方法
  9. 【Golang】基于RSA算法的数据通信和数字签名
  10. 深入理解C语言指针的奥秘
  11. 访问网络计算机提示0 80070035,win7访问局域网共享文件出现 0x80070035错误的解决办法...
  12. 小波变换第2讲:尺度函数与小波函数
  13. 分享一个特别喜欢的背景图片
  14. 【nodejs】mocha+chai+nyc基础
  15. 【原创】EJB开发基础——EJB规范
  16. 新宝市场分析大盘前瞻高位抱团股要提防
  17. 简单几步告别OpenCV Manager
  18. s6和thinkpad x1音频对比 (APX 音频分析仪)
  19. 全面认识Flash技术
  20. datagrip和idea查询数据库 ctrl+enter 查询快捷键设置

热门文章

  1. 0010基于单片机交通灯控制系统设计
  2. 研究生、本科生Java开发、后台、软件工程师秋招春招经验
  3. HDFS与Hive实战 + 滴滴出行数据分析
  4. 中兴交换机配置练习-数据通信技术
  5. Fragment has not been attached yet 解决方法及源码详解
  6. Silverlight 简介
  7. Kubernetes、C语言小白变怪兽、C++ Primer Plus、TCP/IP网络编程、JavaScript高级程序设计
  8. centos7中Nginx服务器的安装教程
  9. R-studio数据恢复软件使用教程
  10. Python数据分析的bs4用法