使用kubeadm在ububtu16.04安装kubernetes1.6.1-flannel

该博客介绍了如何在Ubuntu 16.04上使用kubeadm安装kubernetes 1.6.1,并配置flannel作为Pod网络。内容涵盖了环境准备、集群部署步骤,包括安装docker和kubernetes组件、初始化master和node节点,以及验证集群状态和部署微服务。整个过程中强调了kubeadm的使用和网络插件flannel的安装与配置。
摘要由CSDN通过智能技术生成

上一篇文章介绍在Ubuntu16.04上使用kubeadm搭建kubernetes1.5.5环(http://blog.csdn.net/ximenghappy/article/details/68944706)http://
本文主要介绍在Ubuntu16.04上使用kubeadm搭建kubernetes1.6.1环境。kubeadm安装1.5.5和1.6.1还是有一些区别的,主要在初始化成功后,配置环境变量和安装网络flannel插件

上篇文章简单介绍了一下kubeadm,这篇就不在赘述了,言归正传开始安装。

一:前期环境准备与约束

  • Kubernetes官网上提到kubeadm支持的Ubuntu 16.04+, CentOS 7 or HypriotOSv1.0.1+三种操作系统。
  • 并且每台机器至少要有1GB内存,不然集群运行之后,留给运行在容器内的应用的内存就很少了。
  • 同时要保证所有机器之前的网络是互相连通的。

我准备了两台Ubuntu 16.04虚拟机,一个作为master,一个作为node。
Kubeadm默认安装时,master node将不会参与Pod调度,不会承载work load,即不会有非核心组件的Pod在Master node上被创建出来。当然通过kubectl taint命令可以解除这一限制,不过这是后话了。
准备了两台Ubuntu 16.04虚拟机,集群拓扑参数如下:

节点名     IP地址            CPU 内存
ubuntu-01   192.168.11.74   2核  4GB
ubuntu-02   192.168.11.75   2核  4GB

二:部署目标

  • 部署一套两个节点的Kubernetes集群。
  • 在集群上安装Pod网络插件flannel,允许POD之间相互通讯。
  • 在Kubernetes集群上部署一个微服务应用样例。

三 部署步骤

3.1 部署Kubernetes Master

安装内容包括:

  • docker:容器运行的软件。
  • kubelet:kubelet是Kubernets最重要的组件,它要运行在集群上所有的机器,用来执行类似于开启pods和容器。
  • kubectl:在集群运行时,控制容器的部件。只需要将其运行在主节点上,但是它将对所有节点都有效。
  • Kubeadm:集群部署工具。

以下命令,在两个Node上均要执行。

3.1.1 安装docker 和kubernetes组件

添加apt-key

apt-get update && apt-get install -y apt-transport-https
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -

添加Kubernetes源

cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb http://apt.kubernetes.io/ kubernetes-xenial main
EOF

更新包信息

apt-get update

安装docker

说明:此篇文档安装docker是集成与kubernetes源中的。如果需要提前安装或者单独安装docker 请参考:
https://docs.docker.com/engine/installation/linux/ubuntu/#install-docker

apt-get install -y docker.io 
#如果已经安装了docker这步可以跳过。

安装Kubernetes核心组件

apt-get install -y kubelet kubeadm kubectl kubernetes-cni
# 此处的Kubernetes的核心组件,包括kubelet、kubeadm、kubectl和kubernetes-cni等

下载后的kube组件会自动运行起来。在 /lib/systemd/system下面我们能看到kubelet.service:

# cat /lib/systemd/system/kubelet.service
[Unit]
Description=kubelet: The Kubernetes Node Agent
Documentation=http://kubernetes.io/docs/

[Service]
ExecStart=/usr/bin/kubelet
Restart=always
StartLimitInterval=0
RestartSec=10

[Install]
WantedBy=multi-user.target

注意:以上命令所有节点都需要执行。

3.1.2 初始化集群

理论上通过kubeadm使用init和join命令即可建立一个集群,这init就是在master节点对集群进行初始化。和k8s 之前的部署方式不同的是kubeadm安装的k8s核心组件都是以容器的形式运行于master node上的。所以需要一些镜像。

由于墙的原因无法直接访问到Google的软件仓库(packages.cloud.google.com)和容器仓库(gcr.io),解决方法有两种:一是直接配置的Hosts文件,二是使用三方源或转存的容器仓库。这里使用修改Hosts文件的方法。

把下面几行内容加入到hosts文件中

# vim  /etc/hosts
61.91.161.217 gcr.io
61.91.161.217 www.gcr.io
61.91.161.217 packages.cloud.google.com

最新可用的Google hosts文件可在这里获取:https://github.com/racaljk/hosts

kubeadm要从gcr.io/google_containers repository中pull许多核心组件的images,大约有如下一些:

gcr.io/google_containers/kube-proxy-amd64                v1.6.1              b56ed0c89180        9 days ago          109.2 MB
gcr.io/google_containers/kube-apiserver-amd64            v1.6.1              1f685ed29076        9 days ago          150.5 MB
gcr.io/google_containers/kube-scheduler-amd64            v1.6.1              acfe393e96ba        9 days ago          76.75 MB
gcr.io/google_containers/kube-controller-manager-amd64   v1.6.1              591d6604f79b        9 days ago          132.7 MB
gcr.io/google_containers/k8s-dns-sidecar-amd64           1.14.1              fc5e302d8309        6 weeks ago         44.52 MB
gcr.io/google_containers/k8s-dns-kube-dns-amd64          1.14.1              f8363dbf447b        6 weeks ago         52.36 MB
gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64     1.14.1              1091847716ec        6 weeks ago         44.85 MB
gcr.io/google_containers/etcd-amd64                      3.0.17              243830dae7dd        6 weeks ago         168.9 MB
gcr.io/google_containers/pause-amd64                     3.0                 99e59f495ffa        11 months ago       746.9 kB

3.1.3 初始化master

在Kubeadm的文档中,Pod Network的安装是作为一个单独的步骤的。kubeadm init并没有选择一个默认的Pod network进行安装。这里采用Flannel 作为Pod network,如果我们要使用Flannel,那么在执行init时,按照kubeadm文档要求,我们必须给init命令带上option:–pod-network-cidr=10.244.0.0/16。如果有多网卡的,可以根据实际情况配置–api-advertise-addresses=,单网卡情况可以省略。多网卡的并没有验证过。

使用kubeadm init初始化kubernetes master。
注意kubead init命令指定kubernetes版本是有区别的。
kubeadm1.5执行命令:

kubeadm init --use-kubernetes-version=v1.5.5 --pod-network-cidr=10.244.0.0/16

kubeadm1.6.1执行命令:

kubeadm init --kubernetes-version=v1.6.1 --pod-network-cidr=10.244.0.0/16

执行kubeadm init命令:

# kubeadm init --kubernetes-version=v1.6.1 --pod-network-cidr=10.244.0.0/16
[kubeadm] WARNING: kubeadm is in alpha, please do not use it for production clusters.
[preflight] Running pre-flight checks
[init] Using Kubernetes version: v1.6.1
[tokens] Generated token: "3c43f1.9a42d02deda012ef"
[certificates] Generated Certificate Authority key and certificate.
[certificates] Generated API Server key and certificate
[certificates] Generated Service Account signing keys
[certificates] Created keys and certificates in "/etc/kubernetes/pki"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/kubelet.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/admin.conf"
[apiclient] Created API client, waiting for the control plane to become ready

[apiclient] All control plane components are healthy after 814.549686 seconds
[apiclient] Waiting for at least one node to register and become ready
[apiclient] First node is ready after 4.502786 seconds
[apiclient] Creating a test deployment
[apiclient] Test deployment succeeded
[token-discovery] Created the kube-discovery deployment, waiting for it to become ready
[token-discovery] kube-discovery is ready after 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值