一、环境准备

由于k8s 集群比较吃配置, 建议使用 “按量计费”  来进行学习与测试, 三台 4核8G 的费用大概再 1.6元 /小时, 还是比较便宜的(具体操作请看:云服务器购买按量付费实例,并搭建私有网络图解)。如果想购买服务器,可以看下这个, 一年也就168,配置很高,更划算!! 【腾讯云】云产品限时秒杀,爆款2核4G云服务器,首年168元

  • 三台云服务器、配置:4核8G
  • 三台服务器内网互通(内网可以互相访问 VPC)
  • 系统:CentOS 8.0
  • 开启TCP 6443端口 :Kubernetes API 服务器 (API Server)
  • 开启TCP 30000-32767 范围的端口:NodePort 服务
  • 每台机器都设置成不同的hostname
    • # 1、三台机器一次运行下面的命令, 设置不同的hostname
      # 语法格式:hostnamectl set-hostname xxx
      hostnamectl set-hostname master
      hostnamectl set-hostname node1
      hostnamectl set-hostname node2# 2、重启服务器
      reboot
      
  • 将 SELinux 设置为 permissive 模式(相当于将其禁用)

    • sudo setenforce 0
      sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
  • 关闭swap

    • # 临时关闭swap分区,当前会话生效,重启失效
      swapoff -a
      # 永久关闭swap分区
      sed -ri 's/.*swap.*/#&/' /etc/fstab
  • 允许 iptables 检查桥接流量

    • cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
      br_netfilter
      EOFcat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
      net.bridge.bridge-nf-call-ip6tables = 1
      net.bridge.bridge-nf-call-iptables = 1
      EOF
      sudo sysctl --system

二、环境搭建

1. 安装Docker

这里就不在赘述了, 不知道如何安装的请看我的另外一篇博客

注:由于k8s 和 Docker 版本差异, 可能会产生错误。所以请使用 “yum install -y docker-ce-19.03.13 docker-ce-cli-19.03.13 containerd.io” 替换下述链接的第 8 步的命令。

Linux 下安装Docker图解教程https://blog.csdn.net/IT_rookie_newbie/article/details/120687531

2. 安装Kubernetes

2.1、安装kubelet、kubeadm、kubectl (每台机器都需要执行)

cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpghttp://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
exclude=kubelet kubeadm kubectl
EOFsudo yum install -y kubelet-1.20.9 kubeadm-1.20.9 kubectl-1.20.9 --disableexcludes=kubernetessudo systemctl enable --now kubelet

2.2、安装kubeadm引导集群(每台机器都需要执行)

sudo tee ./images.sh <<-'EOF'
#!/bin/bash
images=(
kube-apiserver:v1.20.9
kube-proxy:v1.20.9
kube-controller-manager:v1.20.9
kube-scheduler:v1.20.9
coredns:1.7.0
etcd:3.4.13-0
pause:3.2
)
for imageName in ${images[@]} ; do
docker pull registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/$imageName
done
EOFchmod +x ./images.sh && ./images.sh

2.3、master 节点域名映射(每台机器都需要执行)

设置每台机器的hostname域名映射,映射的ip是master 节点的ip地址, 这里因为开启了VPC内网互通, 就只使用master节点的局域王ip 即可,否则使用公网ip。

#所有机器添加master域名映射,以下需要修改为自己的
echo "172.31.0.11  k8s-master" >> /etc/hosts

2.4、初始化主节点(只在master 主节点执行)

apiserver-advertise-address需要替换上一步映射的内网ip 、control-plane-endpoint需要替换成上一步映射的名称 

kubeadm init \
--apiserver-advertise-address=172.31.0.11 \
--control-plane-endpoint=k8s-master \
--image-repository registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images \
--kubernetes-version v1.20.9 \
--service-cidr=10.96.0.0/16 \
--ignore-preflight-errors=all \
--pod-network-cidr=192.168.0.0/16

2.5、记录 2.4 步骤的执行结果

执行 2.4 的步骤, 页面会有一堆的执行结果, 当执行完成之后, 需要将下述的结果保存起来, 供后续操作使用。如下图

2.6、执行命令

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

2.7、安装网络插件Calico(只在master 主节点执行)

# 1、下载calico配置文件
curl https://docs.projectcalico.org/manifests/calico.yaml -O# 2、执行配置文件
kubectl apply -f calico.yaml

如果出现“The connection to the server localhost:8080 was refused - did you specify the right host or port?” 错误, 就执行下面的命令,否则不需要执行!

echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
source ~/.bash_profile

2.8、将 node1 和 node2 节点加入工作节点

在工作节点(node1 , node2) 上执行上述初始化结果中的令牌内容,

kubeadm join k8s-master:6443 --token kqi0e4.j8v7dg0qxx4i3re9 \--discovery-token-ca-cert-hash sha256:b8b22ee57294e3c9e4bf09d40ec46dfd2fbb3b07287d512361380fb6b3da019a

 注:这个命令24小时内有效,如果超出了时间范围就执行 “kubeadm token create --print-join-command” ,重新生成一个令牌即可。

2.9、验证集群

在master 节点上使用 “kubectl get nodes” 来验证集群

三、部署dashboard(只在master 主节点执行)

dashboard 是kubernetes官方提供的可视化界面。官方地址:https://github.com/kubernetes/dashboard

1、安装

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.3.1/aio/deploy/recommended.yaml

2、设置访问端口

执行 “kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard” 命令, 将内容中的 type: ClusterIP 改为 type: NodePort

3、查看端口

执行 “kubectl get svc -A |grep kubernetes-dashboard” 命令, 查看端口, 并且在安全组中放行该端口。

4、访问 dashboard

使用集群中任意IP都可以访问。例如本实例中的访问地址应该是 https://119.45.12.114:31756

4、创建访问账号

创建一个dash.yaml 文件,将下述内容写入文件中

apiVersion: v1
kind: ServiceAccount
metadata:name: admin-usernamespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: admin-user
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: cluster-admin
subjects:
- kind: ServiceAccountname: admin-usernamespace: kubernetes-dashboard

执行 dash.yaml 文件

kubectl apply -f dash.yaml

5、获取访问令牌

kubectl -n kubernetes-dashboard get secret $(kubectl -n kubernetes-dashboard get sa/admin-user -o jsonpath="{.secrets[0].name}") -o go-template="{{.data.token | base64decode}}"

将访问令牌输入到页面即可,下图是登录成功显示的页面。到此, k8s 集群的搭建就基本完成了, 后续还会发布更多有关k8s 的知识点, 请敬请关注哦!

二、Kubernetes (k8s) 内网集群的搭建详细图解相关推荐

  1. Kubernetes集群环境搭建详细教程(一主两从)

    Kubernetes集群环境搭建详细教程(一主两从) 1.1 安装要求 在开始之前,部署Kubernetes 集群机器需要满足以下几个条件: 一台或多台机器,操作系统CentOS7.x-86_x64 ...

  2. 云计算与大数据实验二 Hadoop的安装和集群的搭建

    一.实验目的 理解Hadoop集群架构和工作原理 掌握Hadoop安装环境和步骤 掌握Hadoop安装过程的配置,集群的搭建和启动 二.实验内容 Hadoop安装和JDK环境准备 集群的搭建和启动 三 ...

  3. redis集群的搭建详细教程

    1 Redis-cluster架构图             redis-cluster投票:容错  (至少要三个才可以,才能超过半数) 架构细节: (1)所有的redis节点彼此互联(PING-PO ...

  4. 内网集群 无法通信_记一次集群内无可用http服务问题排查

    记一次集群内无可用http服务问题排查 1.摘要 前一阵子发现服务会有偶发的服务不可用的情况,记录一下这个问题的排查过程. 现象是这样的:每天到了某个时间点,就会出现服务不稳定的情况,偶发接口调不通. ...

  5. K8S最新版本集群部署超详细(k8s版本1.5.1)docker 版本19.03.1以及基本操作和服务介绍。

    更新:今天抽时间写了昨天部署的一键脚本: date:Aug 3,2019 <Kubernetes最新版本1.15.1,shell脚本一键部署,刚刚完成测试,实用.> 最近利用空闲时间,把之 ...

  6. k8s高可用集群_搭建高可用集群(初始化和部署keepalived)---K8S_Google工作笔记0055

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 然后我们来部署keepalived,搭建高可用集群. 然后我们这里需要master,155, ma ...

  7. k8s高可用集群_搭建高可用集群(实现方式介绍)---K8S_Google工作笔记0054

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 然后我们来说搭建高可用集群,为什么要搭建高可用集群. 因为,首先我们说master节点是用来管理其 ...

  8. Linux(CentOS7)治理组件nacos(2.0.3版本)单机/集群安装部署详细图解

    一.演示环境说明 三台Linux服务器, IP1:192.168.65.200:IP2:192.168.65.201:IP3:192.168.65.202, MySql_V5.7.24:192.168 ...

  9. Redis Cluster高可用(HA)集群环境搭建详细步骤

    1.为什么要有集群 由于Redis主从复制架构每个数据库都要保存整个集群中的所有数据,容易形成木桶效应,所以Redis3.0之后的版本添加特性就是集群(Cluster) 2.Redis集群架构说明 架 ...

  10. Kubernetes(k8s)之在集群环境部署Prometheus(普罗米修斯监控)和集群的ui管理工具Grafana

    Prometheus Prometheus 演示环境 部署Prometheus和Grafana 测试 Prometheus Prometheus是一个开源系统监控和警报工具包. 现在是一个独立的开源项 ...

最新文章

  1. “996 是福利,007 才是常态”?!千万程序员怒怼每日优鲜!
  2. Pycharm的项目文件名是红色的原因及解决办法
  3. OVS DPDK--介绍(二)
  4. 服务器网站显示多协议,解决高防IIS8服务器https协议多个同时访问的解决方法
  5. element显示服务器的图片,使用element文件上传图片转base64字节传到服务器
  6. 推荐几个超实用公众号,与众不同
  7. visio premium 2010 产品密钥
  8. 【Web前端】怎样用记事本写一个简单的网页-html
  9. python题目-判断素数
  10. c语言编程开发app,C语言编程app
  11. 进一步学习操作系统 - 哈工大李治军老师 - 学习笔记 L13L14L15
  12. 泰国计算机专业大学排名,清迈大学在泰国的排名
  13. 多维数据模型中维度、度量、层级理解
  14. iptables路由转换
  15. 宝塔Linux面板登录的账号密码忘了怎么办?
  16. ubuntu安装有道词典
  17. Lego Boost打算把所有乐高玩具变成可编程机器人
  18. Linux添加SSH Key到Github账户
  19. 学成在线HTML代码,学成在线页面制作(HTML+CSS部分)(顶部+轮播图部分)
  20. 5年没发paper,读博想放弃?科大博导万字自述:曾连收13封拒稿信

热门文章

  1. ES6--阮一峰版笔记
  2. ES6 新特性(深入浅出ES6—阮一峰)
  3. ubuntu wps安装
  4. 实验(一)时间片轮转调度算法(Java)
  5. python调用大漠插件寻路_python调用大漠插件或天使插件
  6. 计算机二级C语言选择题总结
  7. 机房巡检为什么检查指示灯_小工具需要“检查引擎”指示灯
  8. MATLAB初步进行机器学习
  9. mysql数据库证件脱敏_mysql 数据库脱敏
  10. UDS(ISO14229)诊断服务功能及描述完结篇