Kubeadm方式安装Kubernetes
官方文档:https://kubernetes.io/docs/setup/independent/install-kubeadm/
安装Docker 1.12
sudo -s
curl https://releases.rancher.com/install-docker/1.12.sh | sh脚本来自Rancher https://rancher.com/docs/rancher/v1.6/en/hosts/#supported-docker-versions
配置Docker
修改为国内源,修改数据目录为/data/docker
{
"registry-mirrors": ["https://registry.docker-cn.com"],
"storage-driver": "overlay2",
"graph": "/data/docker"
}注意:如果`storage-driver`是`aufs`,那么参数`graph`无法使用,会导致docker重启失败。从docker CE版本开始,storage driver就推荐使用`overlay2`
安装kubeadm和kubectl
这里需要翻墙,参考 Ubuntu 中的翻墙技巧
apt-get update && apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb http://apt.kubernetes.io/ kubernetes-xenial main
EOF
apt-get update
apt-get install -y kubelet kubeadm kubectl检查Docker是否使用Cgroup Driver
为了让docker和k8s的Cgroup Driver保持一致,在参数后面加上 --cgroup-driver=cgroupfs
创建Master节点
创建之前,先关闭swap
预初始化集群
因为k8s的镜像都在Google服务器行,我们不翻墙是无法访问的。
这里--apiserver-cert-extra-sans=k8s-api.prod是为了以后支持高可用master集群,统一一个域名,省去后期麻烦。
监视Docker日志
执行之后,新开窗口,监控docker日志,记录哪些镜像下载失败,并记录下来
输出大概是这样的
回到刚才的kubeadm init窗口,按⌃c终止任务,然后通过如下命令找出需要下载的Docker镜像
目前,我们就找出了如下5个用到的镜像:
现在,找一台国外的服务器,加载上面的镜像,推送到国内自己的Gitlab Docker Registry
现在,我们回到刚才要安装kubeadm init的服务器,执行下面命令,下载镜像
正式初始化集群
初始化成功之后,输入如下:
根据输出提示,我们拷贝kube配置文件,测试通过kubectl获取集群状态。
加入worker节点
安装Docker、kubeadm和kubectl
登录node2服务器,按照上面步骤安装Docker、kubeadm和kubectl
执行Master节点的输出提示:
这里也可以用journalctl -u docker -f查看日志,知道哪些镜像下载失败。
下载镜像
安装Flannel网络
现在,我们回到Master节点,查看节点状态,会发现他们的状态都是NotReady,这是因为我们还没有安装网络插件。
继续翻墙下载镜像
开始安装
现在查看集群状态,所有STATUS都变成了Ready
安装Dashboard
这里,又需要翻墙下载镜像 k8s.gcr.io/kubernetes-dashboard-amd64:v1.8.3
Dashboard启动之后,通过下面命令,代理API端口
然后访问 http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/

需要创建一个帐号
这里需要创建一个帐号才能访问。
把输出的Token填入网站


安装Heapster
这里又是翻墙下载镜像:
这里我把k8s.gcr.io/heapster-influxdb-amd64:v1.3.3镜像到了tanmerk8s/heapster-influxdb-amd64:v1.3.3,所以下面这个方法更简单
这里Grafana的内部端口是3000,如果需要外网访问,可以修改一下deploy配置,设置密码保护,然后通过Ingress绑定域名实现外网访问。
现在能够看到,Heapster和monitoring-grafana已经安装成功

Grafana service by default requests for a LoadBalancer. If that is not available in your cluster, consider changing that to NodePort. Use the external IP assigned to the Grafana service, to access Grafana. The default user name and password is 'admin'. Once you login to Grafana, add a datasource that is InfluxDB. The URL for InfluxDB will be http://INFLUXDB_HOST:INFLUXDB_PORT. Database name is 'k8s'. Default user name and password is 'root'.
Grafana访问地址:
现在,Dashboard就能看到服务器的资源使用情况了

安装Weave Scope
Weave Scope是一个Kubernetes的可视化监控工具,通过他可以总览整个集群构架,实时诊断容器。
安装非常简单,一个命令搞定,最重要的是不用翻墙:
映射Pod端口到本地4040端口
本地浏览器访问 http://localhost:4040

安装Ingress
要让服务能够被外部网络通过域名访问,我们需要安装Ingress。
官方文档:https://kubernetes.io/docs/concepts/services-networking/ingress/
这里我们可以使用官方的ingress-nginx或traefik,这里我们选用功能更完善的traefik
Traefik

参考文档:
https://github.com/rootsongjc/kubernetes-handbook/blob/master/practice/edge-node-configuration.md
以下配置文件可以在kubernetes-handbookGitHub仓库中的../manifests/traefik-ingress/目录下找到。
创建服务帐号
部署Traefik DaemonSet
可以看到,应用已经启动了
现在开启Web端管理服务,域名traefik-ui.local指向UI
本地电脑改一下/etc/hosts文件,指向node2就能访问traefik web UI了

翻墙下载镜像汇总
Last updated