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

8 篇文章 6 订阅
6 篇文章 4 订阅

一、环境准备

由于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
      EOF
      
      cat <<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.gpg
   http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
exclude=kubelet kubeadm kubectl
EOF


sudo yum install -y kubelet-1.20.9 kubeadm-1.20.9 kubectl-1.20.9 --disableexcludes=kubernetes

sudo 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
EOF
   
chmod +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



######################2023年6月17日#####################################
### 发现上述安装方式不能用了, 可以使用下述的方式
kubectl apply -f https://docs.projectcalico.org/archive/v3.14/manifests/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-user
  namespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: 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 的知识点, 请敬请关注哦!

  • 7
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胖太乙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值