构建微服务实验环境(四):Kubernetes 集群

本文详细介绍如何从零开始搭建Kubernetes集群,包括环境准备、安装管理节点和服务节点、配置覆盖网络及部署示例应用。

构建微服务实验环境(四):Kubernetes 集群

1、Kubernetes 安装

Kubernetes 集群安装单 manager 集群,几乎是全自动的。关键是安装包、镜像在 Google 服务器上难以获取。所以,安装建议参考以下文档:

1.1 安装环境

我们将准备三台虚拟机,例如:

hostname ip
k8s-master1 192.168.56.150
k8s-worker1 192.168.56.151
k8s-worker2 192.168.56.152

* 机器第一块网卡是 NAT;ip 属于第二块网卡;
* 系统: centos 7 core 3.10+;
* 内存与CPU:IG RAM 1CPU。

1.2 目标

  • 在机器上安装一个安全的Kubernetes集群,理解相关组件
  • 在群集上安装pod网络,以便应用程序组件(pod)可以相互通信
  • 在集群上安装一个微服务示例应用程序(袜子店)

1.3 准备环境-RPM

所有机器上安装以下软件包:

在主机上安装kubelet和kubeadm
* docker:Kubernetes 依赖的容器运行时。推荐使用 v1.12。
* kubelet:Kubernetes 最核心的组成部分。它在集群中的所有计算机上运行,管理pod和容器。
* kubectl:控制集群运行的 Cli。只需要在管理机上,但是在其他节点上也可以使用它。
* kubeadm:集群安装、管理的 Cli。

docker 安装

curl https://releases.rancher.com/install-docker/1.12.sh | sh

systemctl start docker && systemctl enable docker
systemctl status docker

RPM 包不翻墙的获取

  • 博客1 提供了百度盘下载编译好的 v1.6.2 版本
  • 博客2 自己编译

建议你用 git clone 发行版,kubernetes/release

由于 git 镜像的发行版没有提供分支版本,目前最新版本 v1.6.3 (源码最新版本 v1.6.4)

安装 RPM

将编译后 x86_64 目录中文件,scp 到要安装的 centos 上, 然后在 x86_64 目录下执行

setenforce 0
yum localinstall *.rpm
systemctl enable kubelet && systemctl start kubelet
  • 官网 setenforce 0 是为了让容器有权访问 host 文件系统
  • 启动的 kubelet 这时并不正常,这不是故障,而是等待后面 Kubeadm 的配置

修改 /etc/systemd/system/kubelet.service.d/10-kubeadm.conf 如下:

[Service]
Environment="KUBELET_KUBECONFIG_ARGS=--kubeconfig=/etc/kubernetes/kubelet.conf --require-kubeconfig=true"
Environment="KUBELET_SYSTEM_PODS_ARGS=--pod-manifest-path=/etc/kubernetes/manifests --allow-privileged=true"
Environment="KUBELET_NETWORK_ARGS=--network-plugin=cni --cni-conf-dir=/etc/cni/net.d --cni-bin-dir=/opt/cni/bin"
Environment="KUBELET_DNS_ARGS=--cluster-dns=10.96.0.10 --cluster-domain=cluster.local"
Environment="KUBELET_AUTHZ_ARGS=--authorization-mode=Webhook --client-ca-file=/etc/kubernetes/pki/ca.crt"
Environment="KUBELET_YOUR_ARGS=--pod-infra-container-image=pmlpml/pause-amd64:3.0"
ExecStart=
ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_SYSTEM_PODS_ARGS $KUBELET_NETWORK_ARGS $KUBELET_DNS_ARGS $KUBELET_AUTHZ_ARGS $KUBELET_EXTRA_ARGS $KUBELET_YOUR_ARGS

其中,
(1)添加镜像位置,从能下载的位置下载。--pod-infra-container-image 说明从 pmlpml/pause-amd64:3.0 下载镜像;
(2)删除 cgroup 配置,参考: https://github.com/kubernetes/release/issues/306

其他工作包括:
RHEL / CentOS 7上的一些用户报告了由于iptables被绕过而导致路由不正确的问题。请(3)确保 net.bridge.bridge-nf-call-iptables在sysctl配置中设置为1,例如。

**修改 /usr/lib/sysctl.d/00-system.conf,将 net.bridge.bridge-nf-call-iptables 改成 1。 之后修改当前内核状态

echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables

为了(4)确保让 hostname -i 返回集群用网卡地址,请在 /etc/hosts 添加主机地址,例如:

echo "192.168.56.150 k8s-master1" >> /etc/hosts

以上内容多数在官方文档 Limitations 中有说明。否则,你就会体验所谓的“坑”,坑你几个小时正常。

最后 (5)重新 reload 服务

systemctl daemon-reload

1.4 准备环境-Images

Kubernetes 集群启动需要以下镜像:

gcr.io/google_containers/kube-controller-manager-amd64:v1.6.3
gcr.io/google_containers/kube-apiserver-amd64:v1.6.3
gcr.io/google_containers/kube-scheduler-amd64:v1.6.3
gcr.io/google_containers/kube-proxy-amd64:v1.6.3

gcr.io/google_containers/etcd-amd
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值