如何在CentOS 7 / RHEL 7上安装Kubernetes(k8s)1.7

Kubernetes 是一个可移植的、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。Kubernetes 拥有一个庞大且快速增长的生态系统。Kubernetes 的服务、支持和工具广泛可用。

Kubernetes 源于希腊语,意为 “舵手” 或 “飞行员”。Google 在 2014 年开源了 Kubernetes 项目。Kubernetes 建立在 Google 在大规模运行生产工作负载方面拥有十几年的经验的基础上,结合了社区中最好的想法和实践。

在Kubernetes设置中,有一个主节点和多个工作节点, 集群节点称为工作节点或Minion。 在主节点上,使用“ kubeadm”和“ kubectl”命令管理集群及其节点。

可以使用以下方法安装和部署Kubernetes:

Minikube:单节点kubernetes集群

Kops:将多节点kubernetes设置到AWS中

Kubeadm:生产环境中的多节点集群

在本文中,将使用kubeadm在CentOS 7 / RHEL 7上安装最新版本的Kubernetes 1.7。 如安装的三台CentOS 7服务器。 一台服务器将充当主节点 (Master Node),其余两台服务器将成为工作节点 (Work Node)。

如何在CentOS 7 / RHEL 7上安装Kubernetes(k8s)1.7

主节点上,将安装以下组件

API Server :通过http 协议 提供kubernetes API 服务,API对象的状态存储在etcd中

Scheduler调度程序:主节点上的程序,根据资源的可用性执行调度任务,例如在工作节点上启动容器

Controller Manager 控制器管理器:监视复制控制器 (replication controller)并创建Pod以维持所期望的状态

etcd :键值对数据库,存储集群的配置数据和集群状态。

Kubectl:命令行实用程序,可通过端口6443连接到API Server,可以用来创建容器,服务等

工作节点上,将安装以下组件

Kubelet :每个工作节点上运行的代理,连接到docker,并负责创建,启动,删除容器

Kube-Proxy :根据请求的IP地址和端口号将流量路由到适当的容器。 可认为Kube-Proxy:用于端口转换

Pod :Pod可定义为部署在工作节点或Docker主机上的一组容器

CentOS 7 / RHEL 7上安装Kubernetes 1.7的步骤

在主节点上执行以下步骤

步骤1:停用SELinux并设置防火墙规则

使用以下命令登录到kubernetes主节点禁用selinux

~]# setenforce 0
~]# sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

设置以下防火墙规则

如何在CentOS 7 / RHEL 7上安装Kubernetes(k8s)1.7

注意:如果没有设置dns服务器,在主节点和工作节点上更新/ etc / hosts文件,如下所示:

如何在CentOS 7 / RHEL 7上安装Kubernetes(k8s)1.7

使用“ swapoff -a”命令禁用所有节点的SWAP 交换

步骤2:配置Kubernetes存储库

Kubernetes Packages在默认的CentOS 7和RHEL 7存储库中不可用,使用以下命令配置其软件包存储库。在本示例中,配置使用阿里云上的安装包;

cat <<EOF > /etc/yum.repos.d/kubernetes.repo

[kubernetes]

name=Kubernetes

baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/

enabled=1

gpgcheck=1

repo_gpgcheck=1

gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

EOF

步骤3:安装KubeadmDocker

配置Kubernetes存储库后,运行下面的命令来安装kubeadm和docker软件包

yum install kubeadm docker -y

启动并启用Kubectl和Docker服务

systemctl restart docker && systemctl enable docker
systemctl  restart kubelet && systemctl enable kubelet

步骤4:使用“ kubeadm init”初始化Kubernetes Master

运行下面的命令以初始化和设置kubernetes master

kubeadm init

上面命令的输出将如下所示:

如何在CentOS 7 / RHEL 7上安装Kubernetes(k8s)1.7

正如我们在输出中看到的那样,kubernetes master已成功初始化。 执行以下命令以Root用户使用该群集

如何在CentOS 7 / RHEL 7上安装Kubernetes(k8s)1.7

步骤5:将pod网络部署到集群

尝试运行以下命令以获取集群和Pod的状态:

如何在CentOS 7 / RHEL 7上安装Kubernetes(k8s)1.7

要使集群状态和kube-dns状态为运行状态,需要部署Pod网络,以使不同主机的容器相互通信。 在本示例中,部署POD网络为 Overlay Network 。

运行下面的命令来部署网络:

export kubever=$(kubectl version | base64 | tr -d '\n')
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$kubever"
serviceaccount "weave-net" created
clusterrole "weave-net" created
clusterrolebinding "weave-net" created
daemonset "weave-net" created

现在运行以下命令以验证状态

如何在CentOS 7 / RHEL 7上安装Kubernetes(k8s)1.7

工作节点上执行以下步骤

步骤1:禁用SELinux并在工作节点上配置防火墙规则

使用以下命令登录到kubernetes工作节点禁用selinux

~]# setenforce 0
~]# sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

步骤2:在工作节点上配置Kubernetes存储库

cat <<EOF > /etc/yum.repos.d/kubernetes.repo

[kubernetes]

name=Kubernetes

baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/

enabled=1

gpgcheck=1

repo_gpgcheck=1

gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

EOF

步骤3:安装KubeadmDocker 在工作节点上

配置Kubernetes存储库后,运行下面的命令来安装kubelet和docker软件包

yum install kubelet docker -y

启动并启用Kubectl和Docker服务

systemctl restart docker && systemctl enable docker
systemctl  restart kubelet && systemctl enable kubelet

步骤4:将工作节点加入主节点

将工作节点加入到主节点,需要提供令牌。 kubernetes master初始化后,会在输出得到加入主节点命令和令牌。 复制该命令并在工作节点上运行,如下所示:

如何在CentOS 7 / RHEL 7上安装Kubernetes(k8s)1.7

使用kubectl命令从主节点验证节点状态:

如何在CentOS 7 / RHEL 7上安装Kubernetes(k8s)1.7

如本文所见,主节点和工作节点处于工作就绪状态,已经成功安装了kubernetes 1.7,并且已经成功加入工作节点。 接下来就可以创建Pod和服务。

 

Jenkins  Pipeline 有诸多的语法,如需了解更多的关于Trigger, Input, When 等指令用法,大家可参见Jenkins 官方文档和逗点云的Pipeline 全解析系列课程(https://ke.qq.com/course/458814?tuin=9239b190)和Pipeline 入门系列课程。