在CentOS 7上使用Kubeadm部署Kubernetes

总览

本文旨在帮助您立即建立Kubernetes集群并使用kubeadm运行。本指南将部署两台服务器,一台主服务器和一台工作者,但是您可以部署任意数量的服务器。

什么是kubeadm?

Kubeadm是Kubernetes开发的工具,通过遵循最佳实践,您可以使用它来使最小可行的群集启动并运行。它只会引导您的集群,而不会配置机器。诸如插件,Kubernetes仪表板,监视解决方案等之类的东西并不是kubeadm可以为您做的。

先决条件

我们将要部署的服务器有一些要求。一台或多台运行deb / rpm兼容操作系统的机器。我们将使用CentOS。

  • 每台机器2 GB或更多RAM
  • 主站上2个CPU或更多

群集中所有计算机之间的完全网络连接

本指南中部署的两台服务器如下:-1个带有CentOS 7的CPU 2GB RAM(工作节点)-2个带有CentOS 7的CPU 4GB RAM(主节点)

两台服务器上都有如此多的RAM,Kubernetes将有足够的空间来呼吸。

配置工人和主人

这是我们在主节点和工作节点上都必须执行的步骤:

  • 百胜更新和软件包
  • 安装泊坞窗
  • 禁用selinux
  • 禁用交换
  • 禁用防火墙
  • 更新IPTable
  • 安装kubelet / kubeadm / kubectl

安装Docker

1.14在本教程中,我们将使用Kubernetes的版本。对于此版本,Kubernetes建议运行Docker版本18.06.2。确保为您的Kuberenetes版本检查推荐的Docker版本

我们将Docker存储库添加到yum并专门安装18.06.2。安装Docker之后,我们需要将Docker守护程序配置为Kubernetes建议的设置。

###Add yum-utils, if not installed already
yum install yum-utils

###Add Docker repository.
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

###Install Docker CE.
yum update && yum install docker-ce-18.06.2.ce

###Create /etc/docker directory.
mkdir /etc/docker

###Setup daemon.
cat > /etc/docker/daemon.json <<EOF
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2",
  "storage-opts": [
    "overlay2.override_kernel_check=true"
  ]
}
EOF

mkdir -p /etc/systemd/system/docker.service.d

###Restart Docker
systemctl daemon-reload
systemctl enable docker.service
systemctl restart docker

禁用SELinux

由于我们使用的是CentOS,因此我们需要禁用SELinux。这是允许容器访问主机文件系统所必需的。

setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=disable/' /etc/selinux/config

禁用掉期

需要禁用交换以使kubelet正常工作。

sed -i '/swap/d' /etc/fstab
swapoff -a

禁用防火墙

Kubernetes使用IPTables处理入站和出站流量-为了避免出现任何问题,我们禁用了firewalld。

systemctl disable firewalld
systemctl stop firewalld

更新IPTable

Kubernetes建议我们确保net.bridge.bridge-nf-call-iptables将其设置为1。这是由于REHL / CentOS 7遇到了由于绕过iptables而导致流量重新路由错误的问题。

cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system

安装kubelet / kubeadm / kubectl

我们需要将kubernetes存储库添加到yum中。完成后,我们只需要运行install命令并启用kubelet。

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
exclude=kube*
EOF

yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
systemctl enable --now kubelet

现在,我们已经完全配置了主节点和工作节点。现在,我们可以初始化我们的主节点,并将我们的工作节点加入主节点!

注意 如果要添加更多的工作程序节点,则也必须在所有这些节点上完成上述过程。

主节点设置

我们想通过运行以下命令来初始化主节点。您需要在以下命令中替换主节点的IP地址。此外,我们将传入pod-network-cidr,以便以后安装Flannel网络覆盖图时使我们更轻松。

kubeadm init --apiserver-advertise-address=YOUR_IP_HERE --pod-network-cidr=10.244.0.0/16

这可能需要一段时间才能完成,但是一旦完成,您将在输出末尾看到类似如下的内容。

kubeadm join YOUR_IP:6443 --token 4if8c2.pbqh82zxcg8rswui \
--discovery-token-ca-cert-hash sha256:a0b2bb2b31bf7b06bb5058540f02724240fc9447b0e457e049e59d2ce19fcba2

您的工作节点需要执行此命令才能加入集群,因此请注意它。

接下来是法兰绒。绒布是Pod到Pod通讯的基础。您可以安装其他各种类型的网络覆盖,但为简单起见,本指南将使用Flannel。

kube/config文件复制到,$Home以便您可以执行kubectl命令。

mkdir $HOME/.kube
cp /etc/kubernetes/admin.conf $HOME/.kube/config

主节点上的最后一步是安装Flannel。运行以下命令。

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

复制此配置后,您将可以运行kubectl get cs并获得响应。

NAME                 STATUS    MESSAGE             ERROR
scheduler            Healthy   ok
controller-manager   Healthy   ok
etcd-0               Healthy   {"health":"true"}

您的主节点已设置并准备就绪。进入工作节点!

工作节点

此时,在工作程序节点上不需要进行任何额外的工作。我们需要做的就是运行kubeadm joinkubeadm init输出中获得的命令。

如果您偶然将kubeadm join命令放错了位置,则可以通过运行以下命令在主节点上生成另一个 kubeadm token create --print-join-command

运行kubeadm join命令后,如果kubectl get nodes在master上运行,将看到与以下类似的输出。

NAME          STATUS   ROLES    AGE    VERSION
k8-master   Ready    master   107m   v1.14.2
k8-worker   Ready    <none>   45m    v1.14.2

包起来

就像您已经使用kubeadm启动了Kubernetes集群一样。您也可以使用专用网络执行此操作。Vultr和其他云提供商都允许使用专用网络。另外,如果您想从本地计算机对集群执行kubectl命令,可以通过在本地安装kubectl并将.kube/config文件从集群下拉至本地计算机来实现$HOME/.kube/config

希望本指南可以帮助您遍历kubeadm,并让您立即使用kubernetes!

有用的链接:



Leave a Comment

如何在CentOS 7上安装Oxwall

如何在CentOS 7上安装Oxwall

Oxwall是一个开源社交网络软件平台,可用于免费构建自定义社交网站(SNS)。在这篇文章中,

如何在CentOS 7上设置vsFTPd

如何在CentOS 7上设置vsFTPd

FTP是用于通过Internet传输文件的有用协议,本指南将向您展示如何设置vsFTPd(非常安全的文件传输协议守护程序)o

使用Nethogs监视网络带宽使用情况

使用Nethogs监视网络带宽使用情况

在本教程中,我们将介绍在CentOS 6x x64上安装和使用nethogs的过程。nethogs是一种网络监视工具,它允许Networ

如何在CentOS 7上安装BoltWire CMS

如何在CentOS 7上安装BoltWire CMS

使用其他系统?简介BoltWire是一个用PHP编写的免费,轻量级的内容管理系统。与大多数其他内容管理人员相比

在CentOS 6上设置SA-MP San Andreas多人服务器

在CentOS 6上设置SA-MP San Andreas多人服务器

欢迎来到另一个Vultr教程。在这里,您将学习如何安装和运行SAMP服务器。本指南是为CentOS 6编写的。先决条件

使用Etckeeper进行/ etc的版本控制

使用Etckeeper进行/ etc的版本控制

简介/ etc /目录在Linux系统运行中起着至关重要的作用。其原因是因为几乎每个系统配置

如何在CentOS 7上安装Microweber

如何在CentOS 7上安装Microweber

使用其他系统?Microweber是一个开放源代码的拖放式CMS和在线商店。Microweber源代码托管在GitHub上。本指南将向您展示

如何在CentOS 7上安装SonarQube

如何在CentOS 7上安装SonarQube

使用其他系统?SonarQube是用于质量系统开发的开源工具。它是用Java编写的,并且支持多个数据库。它提供

如何在CentOS 7上使用Mosh进行远程服务器管理

如何在CentOS 7上使用Mosh进行远程服务器管理

使用其他系统?Mosh是Mobile Shell的缩写,是一种新兴的远程终端应用程序,旨在提供更好的连接和使用

如何在CentOS 7上安装MoinMoin

如何在CentOS 7上安装MoinMoin

MoinMoin是一个使用Python编写的基于文件系统的开源Wiki引擎。如今,MoinMoin已广泛用于开源社区。许多供应商

在CentOS 7上安装H2O Web服务器

在CentOS 7上安装H2O Web服务器

H2O是新一代HTTP服务器,它对所有当前使用的Web服务器都具有出色的,功能齐全的HTTP / 2实现。使用H2O作为您的Web服务器

如何在Debian,CentOS和FreeBSD上使用Sudo

如何在Debian,CentOS和FreeBSD上使用Sudo

在Linux和Unix系统管理员中,使用sudo用户访问服务器并在root级执行命令是一种非常普遍的做法。使用泡沫

如何在Ubuntu 16.10上安装Countly Analytics

如何在Ubuntu 16.10上安装Countly Analytics

使用其他系统?Countly是一个开源Web /移动分析和营销平台。它具有许多用于从Web收集数据的功能

如何在CentOS 7上安装MODX CMS和Nginx

如何在CentOS 7上安装MODX CMS和Nginx

MODX是一个用PHP编写的免费开放源内容管理系统。它使用MySQL或MariaDB来存储其数据库。MODX专为满足以下条件的企业而设计:

如何在CentOS 7 LAMP VPS上安装Lychee 3.1相册

如何在CentOS 7 LAMP VPS上安装Lychee 3.1相册

使用其他系统?Lychee 3.1相册是一种简单,灵活,免费和开源的照片管理工具,可在VPS服务器上运行。安装

如何在CentOS 7上安装ERPNext开源ERP

如何在CentOS 7上安装ERPNext开源ERP

使用其他系统?ERP或企业资源计划是用于管理核心业务流程的企业应用程序套件。ERPNext是免费的

如何在CentOS 7 LAMP VPS上安装Paste 2.1

如何在CentOS 7 LAMP VPS上安装Paste 2.1

使用其他系统?Paste 2.1是一个简单,灵活,免费和开源的pastebin应用程序,用于存储代码,文本等。最初是

如何在CentOS 7上安装Seafile Server

如何在CentOS 7上安装Seafile Server

使用其他系统?Seafile(社区版本)是一个免费和开源的文件同步和共享解决方案,类似于ownCloud。机智

如何在CentOS 7上安装Kolab组件

如何在CentOS 7上安装Kolab组件

使用其他系统?Kolab Groupware是一个免费的基于Web的开源组件软件。它的功能包括电子邮件通信,事件

如何在CentOS 7 LAMP VPS上安装Omeka Classic 2.4 CMS

如何在CentOS 7 LAMP VPS上安装Omeka Classic 2.4 CMS

使用其他系统?Omeka Classic 2.4 CMS是一个免费的开源数字发布平台和用于共享数字内容的内容管理系统(CMS)

AI 能否應對越來越多的勒索軟件攻擊?

AI 能否應對越來越多的勒索軟件攻擊?

勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根

ReactOS:這是 Windows 的未來嗎?

ReactOS:這是 Windows 的未來嗎?

ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+

人工智能如何將流程自動化提升到新的水平?

人工智能如何將流程自動化提升到新的水平?

閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。

macOS Catalina 10.15.4 補充更新引發的問題多於解決

macOS Catalina 10.15.4 補充更新引發的問題多於解決

最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息

大數據的13個商業數據提取工具

大數據的13個商業數據提取工具

大數據的13個商業數據提取工具

什麼是日誌文件系統,它是如何工作的?

什麼是日誌文件系統,它是如何工作的?

我們的計算機以稱為日誌文件系統的有組織的方式存儲所有數據。這是一種有效的方法,可以讓計算機在您點擊搜索時立即搜索和顯示文件。 https://wethegeek.com/?p=94116&preview=true

技術奇點:人類文明的遙遠未來?

技術奇點:人類文明的遙遠未來?

隨著科學的快速發展,接管了我們的大量工作,我們陷入無法解釋的奇點的風險也在增加。閱讀,奇點對我們意味著什麼。

洞察 26 種大數據分析技術:第 1 部分

洞察 26 種大數據分析技術:第 1 部分

洞察 26 種大數據分析技術:第 1 部分

2021 年人工智能對醫療保健的影響

2021 年人工智能對醫療保健的影響

過去幾十年,醫療保健領域的人工智能取得了巨大飛躍。因此,醫療保健中人工智能的未來仍在日益增長。