二、Kubernetes (k8s) 内网集群的搭建详细图解
一、环境准备
由于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) 内网集群的搭建详细图解相关推荐
- Kubernetes集群环境搭建详细教程(一主两从)
Kubernetes集群环境搭建详细教程(一主两从) 1.1 安装要求 在开始之前,部署Kubernetes 集群机器需要满足以下几个条件: 一台或多台机器,操作系统CentOS7.x-86_x64 ...
- 云计算与大数据实验二 Hadoop的安装和集群的搭建
一.实验目的 理解Hadoop集群架构和工作原理 掌握Hadoop安装环境和步骤 掌握Hadoop安装过程的配置,集群的搭建和启动 二.实验内容 Hadoop安装和JDK环境准备 集群的搭建和启动 三 ...
- redis集群的搭建详细教程
1 Redis-cluster架构图 redis-cluster投票:容错 (至少要三个才可以,才能超过半数) 架构细节: (1)所有的redis节点彼此互联(PING-PO ...
- 内网集群 无法通信_记一次集群内无可用http服务问题排查
记一次集群内无可用http服务问题排查 1.摘要 前一阵子发现服务会有偶发的服务不可用的情况,记录一下这个问题的排查过程. 现象是这样的:每天到了某个时间点,就会出现服务不稳定的情况,偶发接口调不通. ...
- K8S最新版本集群部署超详细(k8s版本1.5.1)docker 版本19.03.1以及基本操作和服务介绍。
更新:今天抽时间写了昨天部署的一键脚本: date:Aug 3,2019 <Kubernetes最新版本1.15.1,shell脚本一键部署,刚刚完成测试,实用.> 最近利用空闲时间,把之 ...
- k8s高可用集群_搭建高可用集群(初始化和部署keepalived)---K8S_Google工作笔记0055
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 然后我们来部署keepalived,搭建高可用集群. 然后我们这里需要master,155, ma ...
- k8s高可用集群_搭建高可用集群(实现方式介绍)---K8S_Google工作笔记0054
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 然后我们来说搭建高可用集群,为什么要搭建高可用集群. 因为,首先我们说master节点是用来管理其 ...
- 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 ...
- Redis Cluster高可用(HA)集群环境搭建详细步骤
1.为什么要有集群 由于Redis主从复制架构每个数据库都要保存整个集群中的所有数据,容易形成木桶效应,所以Redis3.0之后的版本添加特性就是集群(Cluster) 2.Redis集群架构说明 架 ...
- Kubernetes(k8s)之在集群环境部署Prometheus(普罗米修斯监控)和集群的ui管理工具Grafana
Prometheus Prometheus 演示环境 部署Prometheus和Grafana 测试 Prometheus Prometheus是一个开源系统监控和警报工具包. 现在是一个独立的开源项 ...
最新文章
- “996 是福利,007 才是常态”?!千万程序员怒怼每日优鲜!
- Pycharm的项目文件名是红色的原因及解决办法
- OVS DPDK--介绍(二)
- 服务器网站显示多协议,解决高防IIS8服务器https协议多个同时访问的解决方法
- element显示服务器的图片,使用element文件上传图片转base64字节传到服务器
- 推荐几个超实用公众号,与众不同
- visio premium 2010 产品密钥
- 【Web前端】怎样用记事本写一个简单的网页-html
- python题目-判断素数
- c语言编程开发app,C语言编程app
- 进一步学习操作系统 - 哈工大李治军老师 - 学习笔记 L13L14L15
- 泰国计算机专业大学排名,清迈大学在泰国的排名
- 多维数据模型中维度、度量、层级理解
- iptables路由转换
- 宝塔Linux面板登录的账号密码忘了怎么办?
- ubuntu安装有道词典
- Lego Boost打算把所有乐高玩具变成可编程机器人
- Linux添加SSH Key到Github账户
- 学成在线HTML代码,学成在线页面制作(HTML+CSS部分)(顶部+轮播图部分)
- 5年没发paper,读博想放弃?科大博导万字自述:曾连收13封拒稿信