Centos7.2/7.3集群安装Kubernetes 1.8.4 + Dashboard

1.环境配置

结点数量:3

结点系统:CentOS 7.2 / 7.3


2.效果展示


3.搭建Kubernetes环境【1】

3.1 概述

     Kubernetes集群环境由Master结点和多个Worker结点组成,不同角色的环境配置不同

     假如三个结点的IP如下:

1 k8s-Master: 192.168.1.1
2 k8s-Worker1:192.168.1.2
3 k8s-Worker2:192.168.1.3

3.2 Master结点环境设置

  步骤1:修改hostname,禁用SELinux,设置防火墙或者禁用防火墙

 1 #修改hostname和禁用SELinux
 2 ~]# hostnamectl set-hostname 'k8s-master'
 3 ~]# exec bash
 4 ~]# setenforce 0
 5 ~]# sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
 6 #设置防火墙
 7 [root@k8s-master ~]# firewall-cmd --permanent --add-port=6443/tcp
 8 [root@k8s-master ~]# firewall-cmd --permanent --add-port=2379-2380/tcp
 9 [root@k8s-master ~]# firewall-cmd --permanent --add-port=10250/tcp
10 [root@k8s-master ~]# firewall-cmd --permanent --add-port=10251/tcp
11 [root@k8s-master ~]# firewall-cmd --permanent --add-port=10252/tcp
12 [root@k8s-master ~]# firewall-cmd --permanent --add-port=10255/tcp
13 [root@k8s-master ~]# firewall-cmd --reload
14 [root@k8s-master ~]# echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables
15 #或者禁用防火墙
16 [root@k8s-master ~]#systemctl stop firewalld && systemctl disable firewalld

  步骤2:配置Kubernetes源

     官方给的例子[https://kubernetes.io/docs/getting-started-guides/centos/centos_manual_config/]中,源里面的Kubernetes 版本太旧,写作时还是1.5.2版本,这个版本会有Dashboard的访问查看问题,建议不采用官方这个例子。

     使用新的源:

1 #创建/etc/yum.repos.d/kubernetes.repo文件
2 [kubernetes]
3 name=Kubernetes
4 baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
5 enabled=1
6 gpgcheck=1
7 repo_gpgcheck=1
8 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg
9 https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg

  步骤3:安装Kubeadm和Docker

      安装之前必须将先前的旧版本完全删除,详细请参考CenOS yum remove 命令

1 [root@k8s-master ~]# yum install kubeadm docker -y

      启动并启用Kubectl和Docker服务

1 [root@k8s-master ~]# systemctl restart docker && systemctl enable docker
2 [root@k8s-master ~]# systemctl  restart kubelet && systemctl enable kubelet

  步骤4:初始化Kubernetes Master

1 [root@k8s-master ~]# kubeadm init

如果报错说Swap on not support, 则使用命令 swapoff -a关闭swap功能即可

等待一会后会出现Successfully,借用一下别人的图

 注意保存生成的Token,后面要用到

   步骤5:使用Cluster,确保下面的文件在当前用户的master上,其他用户没有此文件不能访问cluster

1 [root@k8s-master ~]# mkdir -p $HOME/.kube
2 [root@k8s-master ~]# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
3 [root@k8s-master ~]# chown $(id -u):$(id -g) $HOME/.kube/config

  步骤6:部署pod 网络到集群上

Pod网络介绍:To make the cluster status ready and kube-dns status running, deploy the pod network so that containers of different host communicated each other.  POD network is the overlay network between the worker nodes.

1 [root@k8s-master ~]# export kubever=$(kubectl version | base64 | tr -d '\n')
2 [root@k8s-master ~]# kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$kubever"
3 serviceaccount "weave-net" created
4 clusterrole "weave-net" created
5 clusterrolebinding "weave-net" created
6 daemonset "weave-net" created

  步骤7:验证结点状态

 1 [root@k8s-master ~]# kubectl get nodes
 2 NAME         STATUS    AGE       VERSION
 3 k8s-master   Ready     1h        v1.7.5
 4 [root@k8s-master ~]# kubectl  get pods  --all-namespaces
 5 NAMESPACE     NAME                                 READY     STATUS    RESTARTS   AGE
 6 kube-system   etcd-k8s-master                      1/1       Running   0          57m
 7 kube-system   kube-apiserver-k8s-master            1/1       Running   0          57m
 8 kube-system   kube-controller-manager-k8s-master   1/1       Running   0          57m
 9 kube-system   kube-dns-2425271678-044ww            3/3       Running   0          1h
10 kube-system   kube-proxy-9h259                     1/1       Running   0          1h
11 kube-system   kube-scheduler-k8s-master            1/1       Running   0          57m
12 kube-system   weave-net-hdjzd                      2/2       Running   0          7m

3.3 Worker结点环境设置

   步骤1:禁用SELinux,配置防火墙  【参考Master结点环境配置步骤1】

   步骤2:配置Kubernetes源【参考Master结点环境配置步骤2】

   步骤3:安装Kubeadm和Docker【参考Master结点环境配置步骤3】,Worker结点只需要重启docker服务即可.

   步骤4:将工作节点加入到Master结点的集群中,这里的Token就是刚刚Master初始化得到的Token

[root@worker-node1 ~]# kubeadm join --token a3bd48.1bc42347c3b35851 192.168.1.1:6443

   如果报错说端口10250被占用,则执行下面命令找到相关进程并杀掉:

1 sudo lsof -i :10250
2 sudo kill [pid]

   如果报错说/etc/kubernets/下面文件已经存在,则直接删除再执行上面join命令即可

   步骤5: 在Master结点上观察集群情况

1 [root@k8s-master ~]# kubectl get nodes
2 NAME           STATUS    AGE       VERSION
3 k8s-master     Ready     2h        v1.7.5
4 worker-node1   Ready     20m       v1.7.5
5 worker-node2   Ready     18m       v1.7.5
6 [root@k8s-master ~]#

4.搭建Dashboard环境

4.1 下载Dashboard文件[2]

1 git clone https://github.com/kubernetes/dashboard

4.2 部署Dashboard[2]

1 cd dashboard/src/deploy/recommend
2 kubectl apply -f  kubernetes-dashboard.yaml

4.3 从本地访问Dashboard[3]

1 #注意,这种方法只能从启动Dashboard的机器进行访问
2 kubectl proxy
3 Starting to serve on 127.0.0.1:8001
4 #在本地浏览器输入下面地址进行访问
5 http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/

4.4 从外部访问Dashboard[3]

1 #先修改kubernetes-dashboard服务
2 $ kubectl -n kube-system edit service kubernetes-dashboard
3 #将里面的 type:ClusterIP 改为 type:NodePort,然后保存
4 #查看外部端口号
5 $ kubectl -n kube-system get service kubernetes-dashboard
6 NAME                   CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
7 kubernetes-dashboard   10.100.124.90   <nodes>       443:31707/TCP   21h
8 #使用master(就是启动Dashboard的那台机器)的ip和31707这个端口进行访问即可,注意要用https协议而不是http

4.5 登录Dashboard账户方式[4][5]

使用Token方式

 1 #查看token
 2 [root@k8s-master ~]# kubectl  get secret -n kube-system
 3 #选择namespace-controller-token
 4 [root@k8s-master ~]#kubectl describe secret/namespace-controller-token-4vvdq -n kube-system
 5 Name:         namespace-controller-token-4vvdq
 6 Namespace:    kube-system
 7 Labels:       <none>
 8 Annotations:  kubernetes.io/service-account.name=namespace-controller
 9               kubernetes.io/service-account.uid=84ff3777-ce8f-11e7-a967-f8bc124d5cbc
10 
11 Type:  kubernetes.io/service-account-token
12 
13 Data
14 ====
15 ca.crt:     1025 bytes
16 namespace:  11 bytes
17 token:      eyDF4E4HuKNy6y..........Nd5xQDoCT0Pru-FdAzw

将得到的Token复制到浏览器的登录界面,点击sign in就可以登录进去了,因为每个token对应的权限不同,因此可以查看的内容不一样,这方面还有待探索


 5. 相关命令

 1 #查看集群结点状态
 2 kubectl get nodes
 3 #查看详细结点信息
 4 kubectl describe nodes
 5 #查看集群服务状态
 6 kubectl get pods --all-namespaces
 7 #查看集群运行在那些ip上
 8 kubectl cluster-info
 9 #查看master的各种token
10 kubectl get secret -n kube-system
11 #查看某一个特定的token
12 kubectl describe secret/[token name] -n kube-system 

5.参考文献

【1】How to Install Kubernetes (k8s) 1.7 on CentOS 7 / RHEL 7 . [https://www.linuxtechi.com/install-kubernetes-1-7-centos7-rhel7/]

【2】README [https://github.com/kubernetes/dashboard/README.md]

【3】Accessing Dashboard 1.7.x and above [https://github.com/kubernetes/dashboard/wiki/Accessing-Dashboard---1.7.X-and-above

【4】Kubernetes Dashboard 1.7.0部署二三事【http://tonybai.com/2017/09/26/some-notes-about-deploying-kubernetes-dashboard-1-7-0/

【5】How to sign in the kubernetes dashboard? [https://stackoverflow.com/questions/46664104/how-to-sign-in-kubernetes-dashboard]

【6】Dashboard总览[https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/#welcome-view]

【7】Dashboard Authentication[https://kubernetes.io/docs/admin/authentication/]

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏古时的风筝

用python实现的百度音乐下载器-python-pyqt-改进版

之前写过一个用python实现的百度新歌榜、热歌榜下载器的博文,实现了百度新歌、热门歌曲的爬取与下载。但那个采用的是单线程,网络状况一般的情况下,扫描前100首...

2208
来自专栏乐沙弥的世界

Percona XtraDB Cluster添加仲裁节点

Galera Arbitrator是Percona XtraDB集群的成员,用于投票,以防您拥有少量服务器(通常为两个)并且不希望添加更多资源。Galera仲裁...

952
来自专栏运维小白

Linux基础(day63)

18.1 集群介绍 Linux集群概述 根据功能划分为两大类:高可用和负载均衡 1.高可用集群通常为两台服务器,一台工作,另外一台作为冗余,当提供服务的机器宕...

2198
来自专栏Hadoop实操

Sentry赋予server1权限给hive以外用户时ACL不同步问题分析

在使用Sentry赋予server1所有权限给hive以外的用户时(如:fayson用户默认用户组也是fayson),通过Hue使用fayson用户登录,Sen...

4455
来自专栏点滴积累

OpenStack(企业私有云)万里长征第四步——DevStack整体安装规划及使用

一、前言 前期成功通过DevStack安装OpenStack,现将从机房规划到虚拟机搭建的整个过程总结如下,以供日后查阅或有需之人参考。 二、机房规划 这个整个...

3779
来自专栏张戈的专栏

利用腾讯云 COS 云对象存储定时远程备份网站

一、优点分析 内网传输:和阿里云 OSS 一样,腾讯云 COS 同样支持内网和外网文件传输,对于腾讯云服务器,使用内网传输绝对是最快、最稳定的备份方案! 免费...

87710
来自专栏张戈的专栏

利用腾讯云COS云对象存储定时远程备份网站

导读:2 个月前,张戈博客分享了一篇Python+Shell 定时备份网站到阿里云 OSS 的教程,已经有非常多的站长朋友用上了,反馈还不错,也有不少朋友提出了...

3976
来自专栏小巫技术博客

Android Library上传到JCenter仓库实践

774
来自专栏乐沙弥的世界

安装Oracle 11g RAC R2 之Linux DNS 配置

    Oracle 11g RAC 集群中引入了SCAN(Single Client Access Name)的概念,也就是指集群的单客户端访问名称。SCAN...

623
来自专栏扎心了老铁

Linux Redis集群搭建与集群客户端实现

硬件环境 本文适用的硬件环境如下 Linux版本:CentOS release 6.7 (Final) Redis版本:3.2.1 Redis已经成功安装,安装...

36412

扫描关注云+社区