1 整体环境

本地win7环境,8c32g,安装了vmware,在vmware中安装了两台centos7.6 x64的机器(vm),分别如下:

编号 IP 配置 说明
1 192.168.117.132 2c2g k8s master节点
2 192.168.117.133 8c16g k8s node节点

注:这2台vm都已经安装了docker,详见上一篇文章

2 配置k8s master节点

2.1 环境准备:关闭防火墙、selinux、开启net.bridge.bridge-nf-call-iptables、关闭swap分区
systemctl stop firewalld.service
systemctl disable firewalld.servicesetenforce 0
[root@192 ~]# cat /etc/selinux/config
#修改 SELINUX=permissivesysctl -w net.bridge.bridge-nf-call-iptables=1
echo "net.bridge.bridge-nf-call-iptables=1" > /etc/sysctl.d/k8s.confswapoff -a && sed -i '/ swap / s/^/#/' /etc/fstab
2.2 配置kubernetes yum源,安装kubelet、kubeadm
#编辑文件/etc/yum.repos.d/kubernetes.repo , 内容如下
[root@192 ~]# cat /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes Repo
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
enabled=1yum list kubelet --showduplicates | sort -r
yum install kubelet-1.17.0-0
yum install kubeadm-1.17.0-0#启用kubelet:其实不用,不管是运行kubeadm init还是kubeadm join都会自动启动kubelet服务
#systemctl start kubelet
#systemctl enable kubelet

2.3 运行kubeadm init 初始化k8s主节点

kubeadm init --image-repository registry.aliyuncs.com/google_containers#看到类似下面的输出,就成功了
Your Kubernetes control-plane has initialized successfully!To start using your cluster, you need to run the following as a regular user:mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo 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/Then you can join any number of worker nodes by running the following on each as root:kubeadm join 192.168.117.132:6443 --token 6d0ov6.2q3ocbaz7z1x1590 \--discovery-token-ca-cert-hash sha256:759eab4d567cb211b3e2e2307e06fbe25d321f31746cf14c8b6d546034330de3

注:需要指定镜像仓库地址

2.4 在k8s主节点上验证一下

#kubectl配置自动补全
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc#按照kubeadm init最后的提示,配置$HOME/.kube/configkubectl get po --all-namespaces#可以看到主节点,且状态为NotReady
[root@192 ~]# kubectl get nodes
NAME              STATUS     ROLES    AGE     VERSION
192.168.117.132   NotReady   master   5m30s   v1.17.0

3 配置k8s node节点

3.1 环境准备:关闭防火墙、selinux、开启net.bridge.bridge-nf-call-iptables、关闭swap分区(同master节点)
3.2 配置kubernetes yum源,安装kubelet、kubeadm(同master节点)
3.3 运行kubeadm join命令(按照kubeadm init最后的提示)

master节点上生成的join token默认一天后过期,参考:https://www.cnblogs.com/chenzhenqi/p/10695959.html

#看到类似下面的信息,就成功了
This node has joined the cluster:
* Certificate signing request was sent to apiserver and a response was received.
* The Kubelet was informed of the new secure connection details.Run 'kubectl get nodes' on the control-plane to see this node join the cluster.
3.4 验证
#在master节点上执行命令
[root@192 ~]# kubectl get nodes
NAME              STATUS     ROLES    AGE     VERSION
192.168.117.132   NotReady   master   11m     v1.17.0
k8sslave1         NotReady   <none>   2m14s   v1.17.0

4 配置k8s集群网络环境

#在master节点上执行命令
curl -o net.yaml https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')
kubectl apply -f net.yaml#等待3分钟,在master节点运行命令进行验证
[root@192 ~]# kubectl get nodes
NAME              STATUS   ROLES    AGE   VERSION
192.168.117.132   Ready    master   56m   v1.17.0
k8sslave1         Ready    <none>   46m   v1.17.0

5 本地学习的k8s集群搭建完成!,后续会在这个集群上运行一个完整的springcloud测试

[root@192 ~]# kubectl get pod --all-namespaces -o wide
NAMESPACE     NAME                                      READY   STATUS    RESTARTS   AGE   IP                NODE              NOMINATED NODE   READINESS GATES
kube-system   coredns-9d85f5447-h7dk6                   1/1     Running   0          58m   10.32.0.3         192.168.117.132   <none>           <none>
kube-system   coredns-9d85f5447-t622p                   1/1     Running   0          58m   10.32.0.2         192.168.117.132   <none>           <none>
kube-system   etcd-192.168.117.132                      1/1     Running   0          58m   192.168.117.132   192.168.117.132   <none>           <none>
kube-system   kube-apiserver-192.168.117.132            1/1     Running   0          58m   192.168.117.132   192.168.117.132   <none>           <none>
kube-system   kube-controller-manager-192.168.117.132   1/1     Running   0          58m   192.168.117.132   192.168.117.132   <none>           <none>
kube-system   kube-proxy-c78dt                          1/1     Running   0          48m   192.168.117.133   k8sslave1         <none>           <none>
kube-system   kube-proxy-rzrw5                          1/1     Running   0          58m   192.168.117.132   192.168.117.132   <none>           <none>
kube-system   kube-scheduler-192.168.117.132            1/1     Running   0          58m   192.168.117.132   192.168.117.132   <none>           <none>
kube-system   weave-net-jwq64                           2/2     Running   0          36m   192.168.117.133   k8sslave1         <none>           <none>
kube-system   weave-net-pwxjp                           2/2     Running   0          36m   192.168.117.132   192.168.117.132   <none>           <none>

6 安装kubernetes dashboard

参考: https://blog.51cto.com/shunzi115/2447601

7 部署一个简单的nodejs应用

#因为是从阿里云私服拉取镜像,所以需要先配置一个secret对象
#参考:https://www.cnblogs.com/unchch/p/11771005.html
#注意!!!其中的xxx需要替换为你自己的用户名、密码、邮箱
kubectl create secret docker-registry registry-secret --docker-server=registry.cn-hangzhou.aliyuncs.com --docker-username=xxx@163.com --docker-password=xxx --docker-email=xxx@163.com -n default[root@192 ~]# cat kubia.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: kubia-web-demo
spec:selector:matchLabels:app: kubia-web-demoreplicas: 1template:metadata:labels:app: kubia-web-demospec:containers:- name: kubiaimage: registry.cn-hangzhou.aliyuncs.com/jishusc/kubiaports:- containerPort: 8380imagePullSecrets:- name: registry-secret
---apiVersion: v1
kind: Service
metadata:name: kubia-web-demo
spec:type: NodePortports:- port: 8380targetPort: 8380nodePort: 30000selector:app: kubia-web-demo

8 部署镜像出错时的一些查看命令

#重点看 最后的Events
kubectl describe pod -n kubernetes-dashboard kubernetes-dashboard-6b86b44f87-qqtt5
kubectl logs -n kubernetes-dashboard kubernetes-dashboard-6b86b44f87-n8cnk --tail=20

本地搭建kubernetes(版本为1.17.0)集群的步骤相关推荐

  1. K8s系列之:搭建高可用K8s v1.23.5集群详细步骤,3个master节点,3个Node节点

    K8s系列之:搭建高可用K8s v1.23.5集群详细步骤,3个master节点,3个Node节点 一.K8s集群节点划分 二.k8s集群环境准备 三.关闭swap 四.关闭ipv6 五.桥接IPv4 ...

  2. centos7 搭建三主三从 redis5.0集群

    最近在开始准备做毕设.楼主实习的公司为传统行业,技术太老了..只能自己慢慢找资料摸索新东西,打算用spring boot+spring cloud+redis+es+mysql+docker做个web ...

  3. windows安装VMware最新版本(VMware Workstation 17.0 Pro)详细教程

    专栏地址:嵌入式开发 专栏文章: [01]windows安装VMware最新版本(VMware Workstation 17.0 Pro)详细教程 [02]VMware17虚拟机安装Ubuntu最新版 ...

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

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

  5. 基于kubeadm快速部署kubernetes K8S V1.17.4集群-无坑完整版

    基于kubeadm快速部署kubernetes K8S V1.17.4集群,并部署Dashboard Web页面,实现可视化查看Kubernetes资源 主机配置规划 服务器名称(hostname) ...

  6. docker下,一行命令搭建elasticsearch6.5.0集群(带head插件和ik分词器)

    docker下,一行命令搭建elasticsearch6.5.0集群(带head插件和ik分词器) 2019年01月27日 21:06:12 博陵精骑 阅读数:794 标签: dockerelasti ...

  7. Spark-1.4.0集群搭建

    主要内容 Ubuntu 10.04 系统设置 ZooKeeper集群搭建 Hadoop-2.4.1集群搭建 Spark 1.4.0集群搭建 假设已经安装好Ubuntu操作系统 Ubuntu 10.04 ...

  8. Ubuntu18.04 安装搭建 hadoop-3.3.0 集群

    Ubuntu18.04 安装搭建 hadoop-3.3.0 集群 参考博文:https://blog.csdn.net/sunxiaoju/article/details/85222290?ops_r ...

  9. centos7 搭建redis 5.0.0 集群

    redis集群搭建 3台centos7虚拟机 centos7搭建redis5.0集群 2018-11-20 redis集群 文章目录 redis常用命令 redis集群搭建 redis分片 redis ...

  10. 本地k8s集群搭建保姆级教程(4)-安装k8s集群Dashboard

    安装k8s集群管理UI 1 Dashboard安装 1.1 参考文档 Dashboard 是基于网页的 Kubernetes 用户界面. 你可以使用 Dashboard 将容器应用部署到 Kubern ...

最新文章

  1. c语言精品课程网站论文免费下载,【毕业论文_c语言程序设计精品课程网站的研究与实现6喜欢就下吧材料】...
  2. .net随笔-vb.net打开外部程序发送键盘信号(3)
  3. 网狐棋牌(十) 成也萧何败也肖何? IUnknowEx
  4. Angularjs1.x 中的 constant, value
  5. IntelliJ IDEA 2020.x 入门到爱不释手
  6. 取值方法_「EV3进阶课」制作小游戏:数据取值体系要统一(三)
  7. 两个有序数组求中位数log(m+n)复杂度
  8. iOS 滑动性能优化
  9. dispimg函数怎么用_excel中的lookup函数究竟该怎么用?如何才能准确理解它的用法?...
  10. 【常见的检索源期刊】SCI+EI(核心)+ISTP+CSSCI+SSCI+AHCI简介
  11. Gcode G4及M603定义
  12. shell脚本for循环的基础格式以及取值列表的多种取值方式
  13. MapGIS完美转ArcGIS ShapeFile攻略
  14. 2021年安全员-C证(陕西省)考试资料及安全员-C证(陕西省)免费试题
  15. 使用Docker搭建RAP2(技术文档管理私服)
  16. AJAX实现页面登录及注册用户名验证
  17. 【苹果代发家庭推imessage】软件安装利用X代码iMessage Extensitioniments Sage SDK 1
  18. JAVA学习18. HTTP 编程
  19. 测试英语口语标准的软件,最客观的英语口语APP亲身测评,这3款软件让你的口语脱颖而出...
  20. 知己知彼,你的网红营销策略才能百战百胜

热门文章

  1. [视频相关1]页面中插入视频的方法---video/embed/iframe总结
  2. Win10 蓝屏失败的操作nvlddmkm.sys,终止代码driver_irql_less_or_equal
  3. 无线蓝牙耳机什么牌子的好用?目前最好的无线蓝牙耳机
  4. python如何月薪4万_月薪 4 万人民币是一种怎样的感受?
  5. 《游戏设计的100个原理》阅读笔记——游戏创新、创作、平衡与解决问题的方法论【转】...
  6. Win10 正在配置更新一直卡在已完成0%
  7. MySQL索引知识点学习
  8. 64位win7搭建php mysql_在64位Win7系统中配置Apache+Mysql+PHP环境
  9. MySQL——表数据删了一半了,表文件大小还是不变
  10. (附源码)计算机毕业设计SSM智慧校园系统