设为首页 收藏本站
查看: 1391|回复: 0

[经验分享] Centos7.2/7.3集群安装Kubernetes 1.8.4 + Dashboard

[复制链接]

尚未签到

发表于 2018-1-5 07:02:44 | 显示全部楼层 |阅读模式
1.环境配置
  结点数量:3
  结点系统:CentOS 7.2 / 7.3

2.效果展示



3.搭建Kubernetes环境【1】

3.1 概述
  Kubernetes集群环境由Master结点和多个Worker结点组成,不同角色的环境配置不同
  假如三个结点的IP如下:
  

k8s-Master: 192.168.1.1  
k8s-Worker1:192.168.1.2
  
k8s-Worker2:192.168.1.3
  


3.2 Master结点环境设置
  步骤1:修改hostname,禁用SELinux,设置防火墙或者禁用防火墙
  

#修改hostname和禁用SELinux  

~]# hostnamectl set-hostname 'k8s-master'  
~]# exec bash
  
~]# setenforce 0
  
~]# sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
  
#设置防火墙
  
[iyunv@k8s-master ~]# firewall-cmd --permanent --add-port=6443/tcp
  
[iyunv@k8s-master ~]# firewall-cmd --permanent --add-port=2379-2380/tcp
  
[iyunv@k8s-master ~]# firewall-cmd --permanent --add-port=10250/tcp
  
[iyunv@k8s-master ~]# firewall-cmd --permanent --add-port=10251/tcp
  
[iyunv@k8s-master ~]# firewall-cmd --permanent --add-port=10252/tcp
  
[iyunv@k8s-master ~]# firewall-cmd --permanent --add-port=10255/tcp
  
[iyunv@k8s-master ~]# firewall-cmd --reload
  
[iyunv@k8s-master ~]# echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables
  
#或者禁用防火墙
  
[iyunv@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的访问查看问题,建议不采用官方这个例子。
  使用新的源:
  

#创建/etc/yum.repos.d/kubernetes.repo文件  

[kubernetes]  

name=Kubernetes  

baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64  
enabled=1
  
gpgcheck=1
  
repo_gpgcheck=1
  
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg
  
https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
  

  步骤3:安装Kubeadm和Docker
  安装之前必须将先前的旧版本完全删除,详细请参考CenOS yum remove 命令
  

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

  启动并启用Kubectl和Docker服务
  

[iyunv@k8s-master ~]# systemctl restart docker && systemctl enable docker  

[iyunv@k8s-master ~]# systemctl  restart kubelet && systemctl enable kubelet  

  步骤4:初始化Kubernetes Master
  

[iyunv@k8s-master ~]# kubeadm init  

  如果报错说Swap on not support, 则使用命令 swapoff -a关闭swap功能即可
  等待一会后会出现Successfully,借用一下别人的图

  注意保存生成的Token,后面要用到
  步骤5:使用Cluster,确保下面的文件在当前用户的master上,其他用户没有此文件不能访问cluster
  

[iyunv@k8s-master ~]# mkdir -p $HOME/.kube  

[iyunv@k8s-master ~]# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config  

[iyunv@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.
  

[iyunv@k8s-master ~]# export kubever=$(kubectl version | base64 | tr -d '\n')  

[iyunv@k8s-master ~]# 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
  

  步骤7:验证结点状态
  

[iyunv@k8s-master ~]# kubectl get nodes  

NAME         STATUS    AGE       VERSION  

k8s-master   Ready     1h        v1.7.5  
[iyunv@k8s-master ~]# kubectl  get pods  --all-namespaces
  
NAMESPACE     NAME                                 READY     STATUS    RESTARTS   AGE
  
kube-system   etcd-k8s-master                      1/1       Running   0          57m
  
kube-system   kube-apiserver-k8s-master            1/1       Running   0          57m
  
kube-system   kube-controller-manager-k8s-master   1/1       Running   0          57m
  
kube-system   kube-dns-2425271678-044ww            3/3       Running   0          1h
  
kube-system   kube-proxy-9h259                     1/1       Running   0          1h
  
kube-system   kube-scheduler-k8s-master            1/1       Running   0          57m
  
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
  

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

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

sudo lsof -i :10250  
sudo kill [pid]
  

  如果报错说/etc/kubernets/下面文件已经存在,则直接删除再执行上面join命令即可
  步骤5: 在Master结点上观察集群情况
  

[iyunv@k8s-master ~]# kubectl get nodes  

NAME           STATUS    AGE       VERSION  

k8s-master     Ready     2h        v1.7.5  
worker-node1   Ready     20m       v1.7.5
  
worker-node2   Ready     18m       v1.7.5
  
[iyunv@k8s-master ~]#
  


4.搭建Dashboard环境

4.1 下载Dashboard文件[2]
  

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


4.2 部署Dashboard[2]
  

cd dashboard/src/deploy/recommend  

kubectl apply -f  kubernetes-dashboard.yaml  


4.3 从本地访问Dashboard[3]
  

#注意,这种方法只能从启动Dashboard的机器进行访问  

kubectl proxy  

Starting to serve on 127.0.0.1:8001  
#在本地浏览器输入下面地址进行访问
  
http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
  


4.4 从外部访问Dashboard[3]
  

#先修改kubernetes-dashboard服务  

$ kubectl -n kube-system edit service kubernetes-dashboard  

#将里面的 type:ClusterIP 改为 type:NodePort,然后保存  

#查看外部端口号  

$ kubectl -n kube-system get service kubernetes-dashboard  

NAME                   CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE  

kubernetes-dashboard   10.100.124.90   <nodes>       443:31707/TCP   21h  

#使用master(就是启动Dashboard的那台机器)的ip和31707这个端口进行访问即可,注意要用https协议而不是http  


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

#查看token  

[iyunv@k8s-master ~]# kubectl  get secret -n kube-system  

#选择namespace-controller-token  

[iyunv@k8s-master ~]#kubectl describe secret/namespace-controller-token-4vvdq -n kube-system  

Name:         namespace-controller-token-4vvdq  

Namespace:    kube-system  

Labels:       <none>  
Annotations:  kubernetes.io/service-account.name=namespace-controller
  
               kubernetes.io/service-account.uid=84ff3777-ce8f-11e7-a967-f8bc124d5cbc
  

  
Type:  kubernetes.io/service-account-token
  

  
Data
  
====
  
ca.crt:     1025 bytes
  
namespace:  11 bytes
  
token:      eyDF4E4HuKNy6y..........Nd5xQDoCT0Pru-FdAzw
  

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

5. 相关命令
  

#查看集群结点状态  

kubectl get nodes  

#查看详细结点信息  

kubectl describe nodes  

#查看集群服务状态  

kubectl get pods --all-namespaces  

#查看集群运行在那些ip上  

kubectl cluster-info  
#查看master的各种token
  
kubectl get secret -n kube-system
  
#查看某一个特定的token
  
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/]

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-431737-1-1.html 上篇帖子: 高可用Kubernetes集群原理介绍 下篇帖子: 构建Docker平台【第三篇】安装 kubernetes 组件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表