k8s dashboard_半小时搭建一套带Dashboard的kubernetes(K8S)集群

fb5886e0f5539deed5b1b0156cdfa613.png

K8S

kubernetes(K8S)是什么

Kubernetes(常简称为K8S)是用于自动部署、扩展和管理容器化(containerized)应用程序的开源系统。系统由Google设计并捐赠给Cloud Native Computing Foundation(今属Linux基金会)来使用。

它旨在提供“跨主机集群的自动部署、扩展以及运行应用程序容器的平台”。它支持一系列容器工具, 包括Docker等。我们可以将Docker看成Kubernetes内部使用的低级别组件。

为什么要使用kubernetes

Docker这个新兴的容器化技术当前应用越来越广,并且其从单机走向集群也称为必然,而云计算的蓬勃发展正在加速这一进程。kubernetes作为当前普遍被业界广泛认可和看好的docker分布式系统解决方案,前景非常可观。

使用Kubernetes可以做什么:

  • 自动化容器的部署和复制
  • 随时扩展或收缩容器规模
  • 将容器组织成组,并且提供容器间的负载均衡
  • 很容易地升级应用程序容器的新版本
  • 提供容器弹性,如果容器失效就替换它

部署环境准备

机器信息

1a7444eaa65408419497348da9e29c94.png

机器信息

关闭防火墙及selinux

# systemctl stop firewalld# systemctl disable firewalld# setenforce 0

修改hosts

172.17.0.218 k8sm-218172.17.0.219 k8s-219172.17.0.220 k8s-220

增加网络转发

# cat < /etc/sysctl.d/k8s.confnet.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1EOF# sysctl --system //使配置生效

安装组件

安装指定版本Docker

# wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# yum install docker-ce-18.06.1.ce-3.el7 -y# systemctl start docker # systemctl enable docker 

安装指定版本kubelet,kubeadm,kubectl

# cat < /etc/yum.repos.d/kubernetes.repo[kubernetes]name=Kubernetesbaseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64enabled=1gpgcheck=1repo_gpgcheck=1gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpgEOF# yum install kubelet-1.13.3 -y# yum install kubeadm-1.13.3 -y# yum install kubectl-1.13.3 -y# systemctl enable kubelet 

初始化master

# kubeadm init --kubernetes-version=v1.13.3 --apiserver-advertise-address=172.17.0.218 --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12

参数含义:

--kubernetes-version:指定kubeadm版本;

--pod-network-cidr:指定pod所属网络

--image-repository 指定下载源

--service-cidr:指定service网段,负载均衡ip

--ignore-preflight-errors=Swap/all:忽略 swap/所有 报错

初始化成功结果

 Your Kubernetes master has initialized successfully!To start using your cluster, you need to run the following as a regular user: mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/configYou should now deploy a pod network to the cluster.Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at: https://kubernetes.io/docs/concepts/cluster-administration/addons/You can now join any number of machines by running the following on each nodeas root: kubeadm join 172.17.0.218:6443 --token ai3bxc.zgq33i1sbdybhnci --discovery-token-ca-cert-hash sha256:20cb9ccc07e2612bc3b31bd7b5e8909bdbd3d293e7c7f4c18dbee6f62ea94788

增加kubectl权限访问

此处为初始化成功输出的内容,复制即可

# mkdir -p $HOME/.kube# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config# sudo chown $(id -u):$(id -g) $HOME/.kube/config

安装pod网络组件

# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

增加node到集群里

// master初始化后的命令# kubeadm join 172.17.0.218:6443 --token ai3bxc.zgq33i1sbdybhnci --discovery-token-ca-cert-hash sha256:20cb9ccc07e2612bc3b31bd7b5e8909bdbd3d293e7c7f4c18dbee6f62ea94788

master节点查看node状态

# kubectl get nodeNAME STATUS ROLES AGE VERSIONk8s-219 Ready  112m v1.13.3k8s-220 Ready  113m v1.13.3k8sm-218 Ready master 162m v1.13.3

部署webui dashboard

下载官方的yaml文件:

# wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

修改两个地方

第一个是修改镜像,kubernetes-dashboard.yaml配置文件112行

 90 # ------------------- Dashboard Deployment ------------------- # 91  92 kind: Deployment 93 apiVersion: apps/v1 94 metadata: 95 labels: 96 k8s-app: kubernetes-dashboard 97 name: kubernetes-dashboard 98 namespace: kube-system 99 spec:100 replicas: 1101 revisionHistoryLimit: 10102 selector:103 matchLabels:104 k8s-app: kubernetes-dashboard105 template:106 metadata:107 labels:108 k8s-app: kubernetes-dashboard109 spec:110 containers:111 - name: kubernetes-dashboard112 #image: k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1113 image: mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.0114 ports:115 - containerPort: 8443116 protocol: TCP

第二个是添加一个type,指定端口类型为 NodePort,这样外界可以通过地址 nodeIP:nodePort 访问 dashboard,kubernetes-dashboard.yaml配置文件158行:

148 # ------------------- Dashboard Service ------------------- #149 150 kind: Service151 apiVersion: v1152 metadata:153 labels:154 k8s-app: kubernetes-dashboard155 name: kubernetes-dashboard156 namespace: kube-system157 spec:158 type: NodePort159 ports:160 - port: 443161 targetPort: 8443162 selector:163 k8s-app: kubernetes-dashboard

部署到k8s集群

# kubectl apply -f kubernetes-dashboard.yaml # kubectl get pods -n kube-system |grep dashboardkubernetes-dashboard-6685cb584f-xlk2h 1/1 Running 0 98s# kubectl get pods,svc -n kube-systemNAME READY STATUS RESTARTS AGEpod/coredns-78d4cf999f-5hcjm 1/1 Running 0 3h21mpod/coredns-78d4cf999f-6mlql 1/1 Running 0 3h21mpod/etcd-k8sm-218 1/1 Running 0 3h20mpod/kube-apiserver-k8sm-218 1/1 Running 0 3h19mpod/kube-controller-manager-k8sm-218 1/1 Running 0 3h20mpod/kube-flannel-ds-amd64-6kfhg 1/1 Running 0 3h13mpod/kube-flannel-ds-amd64-c4fr4 1/1 Running 0 152mpod/kube-flannel-ds-amd64-qhc2w 1/1 Running 0 151mpod/kube-proxy-7hntq 1/1 Running 0 151mpod/kube-proxy-b4txb 1/1 Running 0 3h21mpod/kube-proxy-bz529 1/1 Running 0 152mpod/kube-scheduler-k8sm-218 1/1 Running 0 3h20mpod/kubernetes-dashboard-6685cb584f-xlk2h 1/1 Running 0 3m5sNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEservice/kube-dns ClusterIP 10.96.0.10  53/UDP,53/TCP 3h21mservice/kubernetes-dashboard NodePort 10.104.4.26  443:31667/TCP 3m5s

通过https访问ui

95838ac2158451aa9324129629ea1117.png

登录页

Token (令牌) 认证方式登录

1)授权 (所有 namespace )

// 创建serviceaccount# kubectl create serviceaccount dashboard-serviceaccount -n kube-system// 创建clusterrolebinding# kubectl create clusterrolebinding dashboard-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-serviceaccount

2)获取令牌(用于网页登录)

// 查看口令列表# kubectl get secret -n kube-system |grep dashboard-serviceaccount-tokendashboard-serviceaccount-token-f45wg kubernetes.io/service-account-token 3 22s// 获取口令# kubectl describe secret dashboard-serviceaccount-token-f45wg -n kube-system

3)将获取到的token放在令牌里

4f07e720a1453d7739c1e37e1e8f31ef.png

输入token

4)登录成功

3b7869233ca437dc9deec6d3ecd30279.png

K8S UI

至此,K8S集群+Dashboard搭建成功!

后记

此篇不涉及理论,面向对象是刚接触K8S的朋友,最小成本来搭建一套K8S集群,以最快时间来看到效果,增加学习的信心^_^

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值