草庐IT

Ubuntu 安装k8s集群

萌褚 2023-10-10 原文

镜像下载、域名解析、时间同步请点击 阿里云开源镜像站

前言

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

  • 修改ubuntu配置
  • 安装docker
  • 安装kubeadm、kubectl以及kubelet
  • 配置master节点
  • 将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

file

一.修改 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文件进行设置,如下结果

file

然后通过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和内存小于最低要求。

file

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就可以在本地查看到如下镜像

file

然后通过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
file

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/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

You 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

原文链接:https://blog.csdn.net/kity9420/article/details/123674582

有关Ubuntu 安装k8s集群的更多相关文章

  1. ruby - 在 64 位 Snow Leopard 上使用 rvm、postgres 9.0、ruby 1.9.2-p136 安装 pg gem 时出现问题 - 2

    我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po

  2. ruby - 完全离线安装RVM - 2

    我打算为ruby​​脚本创建一个安装程序,但我希望能够确保机器安装了RVM。有没有一种方法可以完全离线安装RVM并且不引人注目(通过不引人注目,就像创建一个可以做所有事情的脚本而不是要求用户向他们的bash_profile或bashrc添加一些东西)我不是要脚本本身,只是一个关于如何走这条路的快速指针(如果可能的话)。我们还研究了这个很有帮助的问题:RVM-isthereawayforsimpleofflineinstall?但有点误导,因为答案只向我们展示了如何离线在RVM中安装ruby。我们需要能够离线安装RVM本身,并查看脚本https://raw.github.com/wayn

  3. ruby-on-rails - rails 目前在重启后没有安装 - 2

    我有一个奇怪的问题:我在rvm上安装了ruby​​onrails。一切正常,我可以创建项目。但是在我输入“railsnew”时重新启动后,我有“程序'rails'当前未安装。”。SystemUbuntu12.04ruby-v"1.9.3p194"gemlistactionmailer(3.2.5)actionpack(3.2.5)activemodel(3.2.5)activerecord(3.2.5)activeresource(3.2.5)activesupport(3.2.5)arel(3.0.2)builder(3.0.0)bundler(1.1.4)coffee-rails(

  4. ruby - 如何为 emacs 安装 ruby​​-mode - 2

    我刚刚为fedora安装了emacs。我想用emacs编写ruby。为ruby​​提供代码提示、代码完成类型功能所需的工具、扩展是什么? 最佳答案 ruby-mode已经包含在Emacs23之后的版本中。不过,它也可以通过ELPA获得。您可能感兴趣的其他一些事情是集成RVM、feature-mode(Cucumber)、rspec-mode、ruby-electric、inf-ruby、rinari(用于Rails)等。这是我当前用于Ruby开发的Emacs配置:https://github.com/citizen428/emacs

  5. ruby-on-rails - 无法在centos上安装therubyracer(V8和GCC出错) - 2

    我正在尝试在我的centos服务器上安装therubyracer,但遇到了麻烦。$geminstalltherubyracerBuildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingtherubyracer:ERROR:Failedtobuildgemnativeextension./usr/local/rvm/rubies/ruby-1.9.3-p125/bin/rubyextconf.rbcheckingformain()in-lpthread...yescheckingforv8.h...no***e

  6. ruby - 通过 RVM (OSX Mountain Lion) 安装 Ruby 2.0.0-p247 时遇到问题 - 2

    我的最终目标是安装当前版本的RubyonRails。我在OSXMountainLion上运行。到目前为止,这是我的过程:已安装的RVM$\curl-Lhttps://get.rvm.io|bash-sstable检查已知(我假设已批准)安装$rvmlistknown我看到当前的稳定版本可用[ruby-]2.0.0[-p247]输入命令安装$rvminstall2.0.0-p247注意:我也试过这些安装命令$rvminstallruby-2.0.0-p247$rvminstallruby=2.0.0-p247我很快就无处可去了。结果:$rvminstall2.0.0-p247Search

  7. ruby - 如何在 Lion 上安装 Xcode 4.6,需要用 RVM 升级 ruby - 2

    我实际上是在尝试使用RVM在我的OSX10.7.5上更新ruby,并在输入以下命令后:rvminstallruby我得到了以下回复:Searchingforbinaryrubies,thismighttakesometime.Checkingrequirementsforosx.Installingrequirementsforosx.Updatingsystem.......Errorrunning'requirements_osx_brew_update_systemruby-2.0.0-p247',pleaseread/Users/username/.rvm/log/138121

  8. ruby - Fast-stemmer 安装问题 - 2

    由于fast-stemmer的问题,我很难安装我想要的任何ruby​​gem。我把我得到的错误放在下面。Buildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingfast-stemmer:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcreatingMakefilemake"DESTDIR="cleanmake"DESTDIR=

  9. ruby - 安装 Ruby 时遇到问题(无法下载资源 "readline--patch") - 2

    当我尝试安装Ruby时遇到此错误。我试过查看this和this但无济于事➜~brewinstallrubyWarning:YouareusingOSX10.12.Wedonotprovidesupportforthispre-releaseversion.Youmayencounterbuildfailuresorotherbreakages.Pleasecreatepull-requestsinsteadoffilingissues.==>Installingdependenciesforruby:readline,libyaml,makedepend==>Installingrub

  10. ruby - 如何在 Ubuntu 中清除 Ruby Phusion Passenger 的缓存? - 2

    我试过重新启动apache,缓存的页面仍然出现,所以一定有一个文件夹在某个地方。我没有“公共(public)/缓存”,那么我还应该查看哪些其他地方?是否有一个URL标志也可以触发此效果? 最佳答案 您需要触摸一个文件才能清除phusion,例如:touch/webapps/mycook/tmp/restart.txt参见docs 关于ruby-如何在Ubuntu中清除RubyPhusionPassenger的缓存?,我们在StackOverflow上找到一个类似的问题:

随机推荐