在阿里云服务器怎么安装部署docker+Kubernetes(K8s)


目录

  • 前言
    • Docker全面介绍
    • Kubernetes(K8s) 全面介绍
  • 安装部署docker+Kubernetes(K8s)过程
    • 1.查阅K8S+docker的版本号对应关系
    • 2.将所需的安装包下载到本地(进行本地化安装)
    • 3.机器的准备(其中包括机器版本及配置)
    • 4.环境的准备
    • 5.K8S的安装及加载K8S镜像
    • 6.安装kubeadm并创建K8S集群
    • 7.遇到的坑

前言

Docker全面介绍

Docker 是一个商业容器化平台和运行时,可帮助开发人员构建、部署和运行容器。它使用客户端-服务器架构,通过单个 API 提供简单的命令和自动化。
使用 Docker,开发人员可以通过编写 Dockerfile 来创建容器化应用程序,这本质上是构建容器映像的秘诀。然后,Docker 提供了一组工具来构建和管理这些容器映像,使开发人员能够更轻松地以一致且可重复的方式打包和部署应用程序。
这些容器映像可以在任何支持容器的平台上运行,例如 Kubernetes、Docker Swarm、Mesos 或 HashiCorp Nomad。Docker的平台使开发人员可以更轻松地创建和管理这些容器镜像,从而简化了跨不同环境构建和部署应用程序的过程。

Kubernetes(K8s) 全面介绍

Kubernetes,也称为 K8s,是一个著名的开源平台,旨在跨网络资源集群编排容器运行时系统。它可以独立运行,也可以与其他容器化工具(例如 Docker)结合使用。

Kubernetes 提供了一种实用的解决方案,用于在一台机器上管理一组容器,以减少网络开销并优化资源利用率。例如,一个容器集可以由应用服务器、Redis 缓存和 SQL 数据库组成。相比之下,Docker 容器被设计为每个容器运行一个进程。

随着容器的激增,组织最终可能会拥有数百甚至数千个容器,这使得运营团队必须自动化容器部署、网络、可扩展性和可用性。这导致了容器编排市场的出现。

开发人员选择 Kubernetes 是因为它具有广泛的功能、庞大且不断增长的开源支持工具生态系统,以及它支持各种云服务提供商和工作的能力。所有主要公共云提供商,包括 Amazon Web Services (AWS)、Google Cloud、IBM Cloud 和 Microsoft Azure,都提供完全托管的 Kubernetes 服务,这凸显了其在全行业的受欢迎程度。

Docker 和 Kubernetes 之间的区别

Docker 和 Kubernetes 都是容器化生态系统中的关键组件,具有不同的用途。Docker 主要用于创建和执行容器,而 Kubernetes 用于编排和自动化跨主机集群的容器部署、扩展和管理。
Docker 提供了一种简单有效的容器化方法,而 Kubernetes 提供了自动扩展、自我修复和容器部署等高级功能。

安装部署docker+Kubernetes(K8s)过程

1.查阅K8S+docker的版本号对应关系

1.1.打开github;搜索kubernetes项目(github地址:https://github.com/)

1.2.打开项目中CHANGELOG文件夹,其中就有CHANGELOG-XXX.md版本号文件,如下截图所示:


1.3.打开kubernetes版本号文件,ctrl+f搜索"docker version",便可以查询到所有可用版本号如下截图所示:



2.将所需的安装包下载到本地(进行本地化安装)

3.机器的准备(其中包括机器版本及配置)

3.1.查看linux机器版本号命令:cat /proc/version

我的版本号:Linux version 3.10.0-1062.18.1.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) ) #1 SMP Tue Mar 17 23:49:17 UTC 2020

3.2.机器的配置

cpu:4C 内存:4G 硬盘:32G

查看cpu(逻辑):cat /proc/cpuinfo | grep ‘processor’ | wc -l

查看cpu(物理):cat /proc/cpuinfo | grep ‘physical id’ | sort | uniq | wc -l

查看内存总数:cat /proc/meminfo | grep MemTotal

查看硬盘大小:df -h

4.环境的准备

4.1. 设置主机名与时区

timedatectl set-timezone Asia/Shanghai #都要执行

hostnamectl set-hostname master #194执行

hostnamectl set-hostname node1 #195执行

hostnamectl set-hostname node2 #196执行


4.2. 添加hosts网络主机配置,三台虚拟机都要设置

vim /etc/hosts

192.168.10.194 master

192.168.10.195 node1

192.168.10.196 node2


4.3. 关闭防火墙,三台虚拟机都要设置,生产环境跳过这一步

sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config

setenforce 0

systemctl disable firewalld

systemctl stop firewalld

5.K8S的安装及加载K8S镜像

5.1. 将镜像包上传至服务器每个节点

mkdir /usr/local/k8s-install

cd /usr/local/k8s-install

XFTP上传安装文件


5.2. 按每个Centos上安装Docker

tar -zxvf docker-ce-18.09.tar.gz

cd docker

yum localinstall -y *.rpm


systemctl start docker

systemctl enable docker


5.3. 确保从cgroups均在同一个从groupfs

#cgroups是control groups的简称,它为Linux内核提供了一种任务聚集和划分的机制,通过一组参数集合将一些任务组织成一个或多个子系统。

#cgroups是实现IaaS虚拟化(kvm、lxc等),PaaS容器沙箱(Docker等)的资源管理控制部分的底层基础。

#子系统是根据cgroup对任务的划分功能将任务按照一种指定的属性划分成的一个组,主要用来实现资源的控制。

#在cgroup中,划分成的任务组以层次结构的形式组织,多个子系统形成一个数据结构中类似多根树的结构。cgroup包含了多个孤立的子系统,每一个子系统代表单一的资源


docker info | grep cgroup


如果不是groupfs,执行下列语句


cat</etc/docker/daemon.json{“exec-opts”:[“native.cgroupdriver=cgroupfs”]}EOFsystemctldaemon-reload&&systemctlrestartdocker


5.4. 安装kubeadm

kubeadm是集群部署工具


cd/usr/local/k8s-install/kubernetes-1.14tar-zxvfkube114-rpm.tar.gzcdkube114-rpmyumlocalinstall-y*.rpm


5.5. 关闭交换区


swapoff-avi/etc/fstab#swap一行注释


5.6. 配置网桥


cat</etc/sysctl.d/k8s.confnet.bridge.bridge-nf-call-ip6tables=1net.bridge.bridge-nf-call-iptables=1EOFsysctl--system


5.7. 通过镜像安装k8s


cd/usr/local/k8s-install/kubernetes-1.14dockerload-ik8s-114-images.tar.gzdockerload-iflannel-dashboard.tar.gz


6.安装kubeadm并创建K8S集群

6.1. master主服务器配置


kubeadminit--kubernetes-version=v1.14.1--pod-network-cidr=10.244.0.0/16mkdir-p$HOME/.kubesudocp-i/etc/kubernetes/admin.conf$HOME/.kube/configsudochown(id−u):(id-u):(id−u):(id-g)$HOME/.kube/configkubectlgetnodes#查看存在问题的podkubectlgetpod--all-namespaces#设置全局变量#安装flannel网络组件kubectlcreate-fkube-flannel.yml


6.2. 加入NODE节点


kubeadmjoin192.168.10.194:6443--token0b15nw.w9xq58pcttqq647k–discovery-token-ca-cert-hashsha256:23db3094dc9ae1335b25692717c40e24b1041975f6a43da9f43568f8d0dbac72


如果忘记

在master 上执行kubeadm token list 查看 ,在node上运行(如下ip、端口、token都是master对应的值,切记)


kubeadmjoin192.168.10.194:6443--token0b15nw.w9xq58pcttqq647k--discovery-token-unsafe-skip-ca-verificationkubectlgetnodes


6.3. Master开启仪表盘


kubectlapply-fkubernetes-dashboard.yamlkubectlapply-fadmin-role.yamlkubectlapply-fkubernetes-dashboard-admin.rbac.yamlkubectl-nkube-systemgetsvchttp://192.168.10.194:32000访问


7.遇到的坑

7.1.最开始在自己本地的虚拟机进行安装的由于分配的cpu为1,结果执行6.1步骤的时候报错了,错误提示很明确最少需要2cpu

7.2.后来在以上机器配置中进行5.2中安装docker遇到如下版本号冲突问题,于是百度下载对应版本号的包替换即可(让版本号一致)


错误:软件包:policycoreutils-python-2.5-29.el7_6.1.x86_64 (/policycoreutils-python-2.5-29.el7_6.1.x86_64)

需要:policycoreutils = 2.5-29.el7_6.1

已安装: policycoreutils-2.5-33.el7.x86_64 (@anaconda)

policycoreutils = 2.5-33.el7

可用: policycoreutils-2.5-34.el7.x86_64 (base)

policycoreutils = 2.5-34.el7

错误:软件包:audit-libs-python-2.8.4-4.el7.x86_64 (/audit-libs-python-2.8.4-4.el7.x86_64)

需要:audit-libs(x86-64) = 2.8.4-4.el7

已安装: audit-libs-2.8.5-4.el7.x86_64 (@anaconda)

audit-libs(x86-64) = 2.8.5-4.el7


7.3.执行6.3加入node节点的时候,在node机器输入的命令一直是node机器的ip结果总是报错;后来才恍然大悟,需要用master机器的ip


7.4.执行6.3加入node节点的时候,token过期,导致无法加入

如果遇到如下问题,可能是token过期了,需要执行 kubeadm token create重新获取token


[preflight]Runningpre-flightchecks[preflight]Readingconfigurationfromthecluster…[preflight]FYI:Youcanlookatthisconfigfilewith‘kubectl-nkube-systemgetcmkubeadm-config-oyaml’errorexecutionphasepreflight:unabletofetchthekubeadm-configConfigMap:failedtogetconfigmap:Unauthorized


云服务器的安全怎么进行维护?

随着网络发展越来越快,行业的竞争也非常激烈。在这些条件下,许多行业的恶意攻击是比较厉害的。所以云服务器的安全怎么进行维护呢?现在群英小编给大家讲述一下:1.端到端的数据加密实施加密处理方案是您为维护数据免遭走漏和勒索软件攻击而采纳的最重要举动之一。大多数云存储...
云服务器云服务器安全服务器安全

网络安全之PKI技术原理

PKI(Public Key Infrastructure)定义PKI:利用公钥理论和技术建立的提供网络信息安全服务的基础设施。为用户提供所需的密钥和证书管理,用户可以利用PKI平台提供的安全服务进行安全通信。PKI内容1、认证机构PKI的核心部分,认证中心,...
服务器安全网络安全PKI

不可不知的10款开源IT安全工具

本文介绍了你应该了解的10个IT安全工具包。1. Nessus从许多方面来看,搞好安全先要了解情形。对于几代IT安全专业人士来说,了解网络漏洞始于Tenable的Nessus。据sectools.org声称,Nessus是最受欢迎的漏洞扫描器,也是目前使用的第...
服务器安全IT开源安全工具服务器软件

服务器软件之云锁“服务器优化”功能设置说明

服务器系统默认会开启很多不常用的服务和设置,这些服务和设置既会给服务器造成安全隐患,也会影响服务器使用性能。云锁“服务器优化”功能可以分析您的服务器,对不常用的服务和设置进行优化,提高服务器的安全及性能。“系统防护”下打开“服务器优化”进行扫描。扫描后列出具体...
服务器安全服务器软件云锁服务器优化