一、配置基本环境:

环境配置:

  • Windows 10 Hyper-V虚拟化;
  • 创建3个虚拟机(CentOS Linux release 7.8),1个用于master节点,2个用于work节点;master配置2CPU\4GB内存\3个网卡,Work node配置2CPU\2GB内存\3个网卡;

1、Hyper-v网络环境配置:配置3个虚拟交换机;

因Hyper-v dafault Switch虚拟交换机与桥接的网络,不能配置固定IP,如将这个网络用于node的管理网络,那该网卡只能是从DHCP获取,IP会变动,为在后续测试中带来不必要的麻烦,因此建议增加一个独立的内部管理网络,用于设置固定IP,且同时保留default Switch用于node虚拟机访问Internet外网;
以上交换机名称信息可自行定义

2、安装Centos虚拟机

3个vm:k8s-node01、k8s-node02、k8s-node03;
操作系统版本:CentOS Linux release 7.8.2003 (Core)

3、每台VM配置3个网卡

eth0:主要用于Node管理网络、node与Hyper-v宿主机互通、为POD提供外网访问;
eth1:主要用于node内部专有通讯网络;
eth2:主要用于node虚拟机访问Internet互联网,可以下载软件或镜像;
IP配置信息如下:
K8s-node01 :eth0:172.25.83.130, eth1:10.0.0.1, eth2:自动获取DHCP地址
K8s-node02 :eth0:172.25.83.133, eth1:10.0.0.2, eth2:自动获取DHCP地址
K8s-node03:eth0: 172.25.83.131, eth1:10.0.0.3, eth2:自动获取DHCP地址

注意:多网卡下,如果发现不能访问Internet互联网,需检查路由信息,第一条默认的路由信息必须为eth2,其实只要eth0与eth1网卡在配置固定IP时不用配置网关即可,这样可以保证第一条默认路由为eth2;如下路由示图:

3个VM的网卡配置信息截图:

4、为每个node关闭防火墙

  systemctl stop firewalldsystemctl disable firewalld

5、为每个node关闭selinux:

 cat /etc/selinux/configsed -i 's/enforcing/disabled/' /etc/selinux/configcat /etc/selinux/configsetenforce 0

6、为每个node关闭swap内存

swapoff -a  #关闭临时的
cat /etc/fstab
sed -ri 's/.*swap.*/#&/' /etc/fstab   #永久关闭
cat /etc/fstab

7、为每个node重命名

   hostnamectl set-hostname k8s-node01hostnamectl set-hostname k8s-node02hostnamectl set-hostname k8s-node03

8、为每个node添加主机名与IP对应关系

vim /etc/hosts
172.25.83.130 k8s-node01
172.25.83.133 k8s-node02
172.25.83.131 k8s-node03

9、为每个node桥接的IPV4流量传递到iptables的链:

cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1
EOFsysctl --system     #让系统应用以上规则

10、为每个node配置本地时间

  yum install -y ntpdatentpdate time.windows.comdate

11、给VM配置还原点保存当前状态,便于后面出问题可以恢复到当前状态。

二、配置容器环境(每个节点上都需执行)

1、卸载docker,确保每个node的干净的

  yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine

2、安装Docker的前置依赖

yum install -y yum-utils device-mapper-persistent-data lvm2

3、设置docker yum源


yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo#默认是国外的,下载比较慢,建议使用阿里云的源安装docker

4、更新yum软件包索引

yum makecache fast

5、安装docker社区版,以及docker-cli

yum install -y docker-ce docker-ce-cli containerd.io

6、启动docker

systemctl start docker

7、查看docker版本信息(判断是否安装成功)

docker version

8、默认镜像是从Docker Hub下载,国内比较慢,推荐使用自己的阿里云加速

 mkdir -p /etc/dockervim /etc/docker/daemon.json {"registry-mirrors": ["https://qt4cct09.mirror.aliyuncs.com"]  #该地址可以通过阿里云自己创建;}
systemctl daemon-reload
systemctl restart docker
docker info检查配置的加载地址

8、设置docker开机自启动

systemctl enable docker

三、安装K8s基本工具(每个节点上都需执行)

1、配置阿里云yum源

cat > /etc/yum.repos.d/kubernetes.repo  <<EOF [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 clean all
yum makecache

2、安装kubelet\kubeadm\kubectl

yum install -y kubelet  kubeadm kubectl
yum install epel-release (如果上面安装过程找不到到安装包,需要执行该操作)

3、配置kubelet开机启用

systemctl enable kubelet
systemctl start kubelet

4、检查kubelet服务状态

systemctl status kubelet   #(因没有配置好其他环境,检查状态是失败的)

四、部署k8s-master(仅在Master node节点上执行)

1、master节点初始化

kubeadm init --kubernetes-version=1.18.0  \
--apiserver-advertise-address=172.25.83.130   \
--image-repository registry.aliyuncs.com/google_containers  \
--service-cidr=10.10.0.0/16 --pod-network-cidr=10.122.0.0/16

POD的网段为: 10.122.0.0/16, api server地址就是master本机IP。

这一步很关键,由于kubeadm 默认从官网k8s.grc.io下载所需镜像,国内无法访问,因此需要通过–image-repository指定阿里云镜像仓库地址。

2、初始化完成后,根据提示创建kubectl

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

3、使kubectl可以自动补齐命令

[root@master01 ~]# source <(kubectl completion bash)  #可按tab键补齐命令

4、查看节点,pod

[root@master01 ~]# kubectl get node  #只会显示Default名称空间的pod;
[root@master01 ~]# kubectl get pod --all-namespaces

注意:node节点为NotReady,因为coredns pod没有启动,且缺少网络pod;

5、将node02与node03加入该集群:

master节点初始化完后会提示以下信息,将命令在node02与node03上执行后会自动加入该集群,以下证书2小时内有效)

kubeadm join 172.25.83.130:6443 --token c9pnxh.kcmwarwb84osgntg \--discovery-token-ca-cert-hash sha256:2f4469200b4204cf7999c1c2fd5e8f2b8b003dc439d3b49ad8555d433a9c638c    #证书可一般2小时内有效,建议在master初始化完成就将其他节点加入集群;

实时监控node加入集群的状态

watch kubectl get pod -n kube-system -o wide

查看nods状态

kubectl get nods

因没有安装K8s内部网络资源,node节点显示为未准备状态;

6、安装calico网络

[root@master01 ~]# kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

7、查看节点,pod

需要等待calico网络处于运行状态,才能进行下一步操作。

[root@master01 ~]# kubectl get pod --all-namespaces
NAMESPACE     NAME                                        READY   STATUS    RESTARTS   AGE
kube-system   calico-kube-controllers-555fc8cc5c-k8rbk    1/1     Running   0          36s
kube-system   calico-node-5km27                           1/1     Running   0          36s
kube-system   coredns-7ff77c879f-fsj9l                    1/1     Running   0          5m22s
kube-system   coredns-7ff77c879f-q5ll2                    1/1     Running   0          5m22s
kube-system   etcd-master01.paas.com                      1/1     Running   0          5m32s
kube-system   kube-apiserver-master01.paas.com            1/1     Running   0          5m32s
kube-system   kube-controller-manager-master01.paas.com   1/1     Running   0          5m32s
kube-system   kube-proxy-th472                            1/1     Running   0          5m22s
kube-system   kube-scheduler-master01.paas.com            1/1     Running   0          5m32s
[root@master01 ~]# kubectl get node
NAME                STATUS   ROLES    AGE     VERSION
master01.paas.com   Ready    master   5m47s   v1.18.0

以上操作到此,K8S集群是可以正常运行了。
接下来为k8s dashboard图形化展示工具的安装,也可以安装第三方的。

8 安装kubernetes-dashboard

a、官方部署dashboard的服务没使用nodeport,将yaml文件下载到本地,在service里添加nodeport

[root@master01 ~]# wget  https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-rc7/aio/deploy/recommended.yaml   #下载dashboard yaml官方模板
[root@master01 ~]# vim recommended.yaml  #需要修改信息,才能提供访问;
kind: Service
apiVersion: v1
metadata:labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboardnamespace: kubernetes-dashboard
spec:type: NodePort     #增加NodePort端口ports:- port: 443targetPort: 8443nodePort: 30000    #该数字可自定义selector:k8s-app: kubernetes-dashboard

如下载yaml文件失败,则需要配置raw.githubusercontent.com主机IP,
vi /etc/hosts文件添加如下地址表:

**# GitHub Start**
52.74.223.119 github.com
192.30.253.119 gist.github.com
54.169.195.247 api.github.com
185.199.111.153 assets-cdn.github.com
151.101.76.133 raw.githubusercontent.com
151.101.108.133 user-images.githubusercontent.com
151.101.76.133 gist.githubusercontent.com
151.101.76.133 cloud.githubusercontent.com
151.101.76.133 camo.githubusercontent.com
151.101.76.133 avatars0.githubusercontent.com
151.101.76.133 avatars1.githubusercontent.com
151.101.76.133 avatars2.githubusercontent.com
151.101.76.133 avatars3.githubusercontent.com
151.101.76.133 avatars4.githubusercontent.com
151.101.76.133 avatars5.githubusercontent.com
151.101.76.133 avatars6.githubusercontent.com
151.101.76.133 avatars7.githubusercontent.com
151.101.76.133 avatars8.githubusercontent.com
**# GitHub End**

b、创建dashboard pod:

[root@master01 ~]# kubectl create -f recommended.yamlnamespace/kubernetes-dashboard created
serviceaccount/kubernetes-dashboard created
service/kubernetes-dashboard created
secret/kubernetes-dashboard-certs created
secret/kubernetes-dashboard-csrf created
secret/kubernetes-dashboard-key-holder created
configmap/kubernetes-dashboard-settings created
role.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
deployment.apps/kubernetes-dashboard created
service/dashboard-metrics-scraper created
deployment.apps/dashboard-metrics-scraper created
#显示创建成功后的信息

c、查看pod,service(确认正常)

[root@master01 ~]# kubectl get pod
NAME                                        READY   STATUS    RESTARTS   AGE
dashboard-metrics-scraper-dc6947fbf-869kf   1/1     Running   0          37s
kubernetes-dashboard-5d4dc8b976-sdxxt       1/1     Running   0          37s
[root@master01 ~]# kubectl get svc -n kubernetes-dashboard
NAME                        TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)         AGE
dashboard-metrics-scraper   ClusterIP   10.10.58.93    <none>        8000/TCP        44s
kubernetes-dashboard        NodePort    10.10.132.66   <none>        443:30000/TCP   44s
[root@master01 ~]#

d、查看凭证

kubectl -n kubernetes-dashboard get secret

e、获取浏览器访问dashboard站点的Toke

[root@k8s-node01 ~]# kubectl describe secrets -n kubernetes-dashboard kubernetes-dashboard-token-9cjt2 | grep token | awk 'NR==3{print $2}'
#如下是我部署dashboard的toke信息
eyJhbGciOiJSUzI1NiIsImtpZCI6IjM5XzE5WFZscG5DTlVmWTZMRGo2UE8xdFl4dVNwTkJKUTQzeEZwQWY5UW8ifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2hib2FyZC10b2tlbi05Y2p0MiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjgzOGJmNWQzLTgzOGItNGY1YS04OGZiLTRiNjVlNjVkNjFmNyIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlcm5ldGVzLWRhc2hib2FyZDprdWJlcm5ldGVzLWRhc2hib2FyZCJ9.Oxpu_3fkXj51rsqhWx70wS7rCZC8fDJQLPNJbMl4zyTpRJyPUm0MFSf5DZBNZT9IcCrsIazSxI-EKfCzXWx8Vn9UijE9c6xAe8xxj6ITjDz65VIehN9VXClAWT5UUJ9km4eqNl76yexTq0kzK_uI0XS9qQNLR4wnb2wIdehkHBylcXS-iSwB00ChWGfNx6jm8syvlllH3i3dDsxsC9BxFhnPQ3OQgRcXsJw0US0S08aJSnhmAa8uOhtO4ntd2zD161j91A7IZ9f2Uh7vee5Ph3giMVZGQDj3rnDodZ4_JIouM1i5uzOTj9Cg-loQZHRZYOi3aBWXcaHBJkee2n77jg

f、使用浏览器打开kubernetes Dashboard:

登录后如下展示,如果没有namespace可选,并且提示找不到资源 ,那么就是权限问题

以上问题是账号权限问题,解决方法:

kubectl create clusterrolebinding serviceaccount-cluster-admin --clusterrole=cluster-admin --user=system:serviceaccount:kubernetes-dashboard:kubernetes-dashboard
kubectl delete clusterrolebinding serviceaccount-cluster-admin  #如之前权限创建有问题,可以使用该命令清理,再重新执行上面命令
查看日志:
kubectl logs -f -n kubernetes-dashboard kubernetes-dashboard-5d4dc8b976-8xqgk

dashboard正常状态:

g、查验集群状态

[root@k8s-node01 ~]# kubectl get nodes
NAME         STATUS   ROLES    AGE     VERSION
k8s-node01   Ready    master   3h29m   v1.18.6
k8s-node02   Ready    <none>   57m     v1.18.6
k8s-node03   Ready    <none>   57m     v1.18.6
[root@k8s-node01 ~]# kubectl get pod --all-namespaces
NAMESPACE              NAME                                        READY   STATUS    RESTARTS   AGE
kube-system            calico-kube-controllers-578894d4cd-rpcps    1/1     Running   0          3h14m
kube-system            calico-node-kjfnn                           1/1     Running   0          3h14m
kube-system            calico-node-sx4h6                           1/1     Running   0          57m
kube-system            calico-node-wx9tq                           1/1     Running   0          58m
kube-system            coredns-7ff77c879f-6mwdf                    1/1     Running   0          3h29m
kube-system            coredns-7ff77c879f-zf46c                    1/1     Running   0          3h29m
kube-system            etcd-k8s-node01                             1/1     Running   0          3h29m
kube-system            kube-apiserver-k8s-node01                   1/1     Running   0          3h29m
kube-system            kube-controller-manager-k8s-node01          1/1     Running   0          3h29m
kube-system            kube-proxy-54wtk                            1/1     Running   0          57m
kube-system            kube-proxy-xlv5k                            1/1     Running   0          3h29m
kube-system            kube-proxy-zz9jz                            1/1     Running   0          58m
kube-system            kube-scheduler-k8s-node01                   1/1     Running   0          3h29m
kubernetes-dashboard   dashboard-metrics-scraper-dc6947fbf-wsf2b   1/1     Running   0          110m
kubernetes-dashboard   kubernetes-dashboard-5d4dc8b976-8xqgk       1/1     Running   0          110m
[root@k8s-node01 ~]# kubectl get svc --all-namespaces
NAMESPACE              NAME                        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                  AGE
default                kubernetes                  ClusterIP   10.10.0.1       <none>        443/TCP                  3h31m
kube-system            kube-dns                    ClusterIP   10.10.0.10      <none>        53/UDP,53/TCP,9153/TCP   3h31m
kubernetes-dashboard   dashboard-metrics-scraper   ClusterIP   10.10.224.238   <none>        8000/TCP                 111m
kubernetes-dashboard   kubernetes-dashboard        NodePort    10.10.66.138    <none>        443:30000/TCP            111m

到此k8s集群+Dashboard全部完成,以上信息如有错误,请指正,谢谢。

End.

Hyper-v搭建K8s v1.18.6 单主集群环境(包括dashboard)相关推荐

  1. K8S通过rook部署rook ceph集群、配置dashboard访问并创建pvc

    Rook概述 Ceph简介 Ceph是一种高度可扩展的分布式存储解决方案,提供对象.文件和块存储.在每个存储节点上,将找到Ceph存储对象的文件系统和Ceph OSD(对象存储守护程序)进程.在Cep ...

  2. Kubeadm 快速搭建 k8s v1.24.1 集群(openEuler 22.03 LTS)

    kubeadm 简介 kubeadm 是 Kubernetes(以下简称 k8s)官方提供的用于快速安装部署 k8s 集群的工具,伴随 k8s 每个版本的发布都会同步更新,kubeadm 会对集群配置 ...

  3. 实践练习二(必选):手动部署 OceanBase 单副本集群

    说明 相关连接: https://open.oceanbase.com/blog/10900159 https://open.oceanbase.com/answer/detail?id=137006 ...

  4. [k8s] 第二章 十分钟带你搭建k8s集群环境

    本章节主要介绍如何搭建kubernetes的集群环境 环境规划 集群类型 kubernetes集群大体上分为两类:一主多从和多主多从. 一主多从:一台Master节点和多台Node节点,搭建简单,但是 ...

  5. 学习笔记之-Kubernetes(K8S)介绍,集群环境搭建,Pod详解,Pod控制器详解,Service详解,数据存储,安全认证,DashBoard

    笔记来源于观看黑马程序员Kubernetes(K8S)教程 第一章 kubernetes介绍 应用部署方式演变 在部署应用程序的方式上,主要经历了三个时代: 传统部署:互联网早期,会直接将应用程序部署 ...

  6. k8s安装部署步骤_30分钟无坑部署K8S单Master集群

    Jesse导读:11月9号,我在中国.NET开发者峰会(.NET Conf China 2019)上分享了之前ASP.NET Core和Kubernetes做微服务的经验,在10号的时候又联合张善友. ...

  7. 30分钟无坑部署K8S单Master集群

    Jesse导读:11月9号,我在中国.NET开发者峰会(.NET Conf China 2019)上分享了之前ASP.NET Core和Kubernetes做微服务的经验,在10号的时候又联合张善友. ...

  8. docker-ce-v18.09.0+kubernetes-v1.15.1(k8s)集群环境+dashboard-v1.10.1搭建完整教程

    一.k8s简介 什么是kubernetes 首先,他是一个全新的基于容器技术的分布式架构领先方案.Kubernetes(k8s)是Google开源的容器集群管理系统(谷歌内部:Borg).在Docke ...

  9. 18.6 负载均衡集群介绍 18.7 LVS介绍 18.8 LVS调度算法 18.9/18.10 LVS NAT模式搭建

    2019独角兽企业重金招聘Python工程师标准>>> 18.6 负载均衡集群介绍 实现负载均衡集群的软件有:LVS.Keepalived.Nginx.haproxy等.其中LVS属 ...

最新文章

  1. 学术前沿 | 基于深度学习的视觉三维重建研究总结
  2. 火星坐标、百度坐标、WGS-84坐标相互转换及墨卡托投影坐标转经纬度JavaScript版...
  3. C++虚成员函数表vtable
  4. WEKA The workbench for machine learning
  5. SAP Fiori Launchpad tile里显示的数字的刷新间隔是在服务器端什么地方配置的
  6. java 一对多 socket_js作为websocket client,服务用java 点对点、一对多聊天
  7. JAVA并发编程的挑战
  8. 分别采用线性LDA、k-means和SVM算法对鸢尾花数据集和月亮数据集进行二分类可视化分析
  9. mysql汽车品牌系列_爬取汽车之家汽车品牌型号系列数据
  10. C语言入门——求n的阶乘
  11. html怎么设置左侧区域宽度,【CSS】左侧定宽、右侧宽度自适应布局
  12. 漫谈中国数字电视标准的诞生
  13. 【Python数据清洗】numpy.take()用法
  14. 蜗牛君漫聊设计模式---建造者模式
  15. maven中遇到的问题,报错
  16. 通往奥格瑞玛的道路(二分+迪杰斯特拉堆优化)
  17. E-puck2机器人系列教程-7.机器人本体STM32固件更新
  18. 我的4g网卡运行着GNU/Linux -- 某4g无线网卡的逆向工程与主线Linux移植 (二)
  19. 按键精灵脚本打包工具(自带热更新功能)方便有需要的人有教程有链接
  20. linux下有没有蜘蛛纸牌游戏,在Linux下可用Wine安装和运行蜘蛛纸牌、浩方电竞平台...

热门文章

  1. sqlserver数据库修改日志文件大小限制
  2. 现场直击汶川地震都江堰灾情(图)
  3. 使用 Java 8 语言功能
  4. redis:连接命令详解
  5. ROS TF2静态坐标发布
  6. 基于阈值的全零块判决算法
  7. 友谊随笔——你是人间四月天(竹)
  8. matlab的imshow()显示图片过小咋办
  9. linux系统编程课程改革,项目驱动的Linux操作系统课程教学改革
  10. 嵌入式Linux能调用cheese吗,嵌入式系统BootLoader技术内幕