• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

最新k8s集群搭建教程

武飞扬头像
qq_20376949
帮助1

本次安装在vmware虚拟机下开启3台2核2g的Ubuntu20.04系统
master:192.168.192.137
node1:192.168.192.136
node2:192.168.192.138

关闭防火墙
先查看防火墙状态,如果是关闭就不用管

ufw status

学新通
关闭selinux,如果没有安装selinux就不用管,下图就显示没有安装。

setenforce 0

学新通
分别修改三台主机的hostname,改成对应的名称:master,node1,node2

vim /etc/hostname

:学新通
修改三台主机hosts文件

vim /etc/hosts

三台都需要添加

192.168.192.137 master
192.168.192.136 node1
192.168.192.138 node2

学新通
将桥接的IPv4流量传递到iptables的链

vim /etc/sysctl.d/k8s.conf

三台都要添加

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward                 = 1

学新通
使之生效

sysctl --system 

设置单台主机的静态ip
查看路由表找到网关地址

route -n

学新通
在三台主机上分别配置静态ipv4地址

vim /etc/netplan/00-installer-config.yaml

学新通

network:
  ethernets:
    ens33:
      addresses: [192.168.192.137/24]
      dhcp4: false
      gateway4: 192.168.192.2
      nameservers:
          addresses: [192.168.192.2,114.114.114.114]
  version: 2

使配置的ip地址生效

netplan apply

在三台主机上配置NTP时间同步

(设置时区)
timedatectl set-timezone Asia/Shanghai
apt install ntpdate
ntpdate ntp.ntsc.ac.cn
(查看时间)
hwclock

设置时区后再次执行date查看时间日期最后是否变成了CST。最后为了使得系统日志的时间戳也立即生效,需要执行一下命令重启rsyslog:

sudo systemctl restart rsyslog

关闭swap

vim /etc/fstab

注释掉swap.img none swap sw 0 0这行
学新通

docker 安装
apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common -y

 apt update
 
 curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
 
 add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
 
apt-get install docker-ce docker-ce-cli containerd.io

安装 cri-dockerd因为k8s在1.24移除了Dockershim,所以需要一个支持cri的插件
查看系统下载对应的版本

lsb_release -a

学新通

学新通

wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.4/cri-dockerd_0.3.4.3-0.ubuntu-focal_amd64.deb

 dpkg -i cri-dockerd_0.3.4.3-0.ubuntu-focal_amd64.deb
 
 # 重载系统守护进程
 systemctl daemon-reload
  # 设置cri-dockerd自启动
systemctl enable cri-docker.socket cri-docker
 # 启动cri-dockerd
start cri-docker.socket cri-docker 
查看cri-docker状态
systemctl status cri-docker.socket

安装 kubectl

#用以下命令下载最新发行版
 curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
   
#下载验证该可执行文件
curl -LO "https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256"

基于校验和文件,验证 kubectl 的可执行文件:
echo "$(cat kubectl.sha256)  kubectl" | sha256sum --check

验证通过时,输出为:
kubectl: OK

安装 kubectl
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

验证安装是否成功
kubectl version --client

学新通

安装 kubeadm
····
apt-get update

apt-get install -y apt-transport-https ca-certificates curl

mkdir -p /etc/apt/keyrings/

chmod -R 755 /etc/apt/keyrings

curl -fsSL https://dl.k8s.io/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-archive-keyring.gpg

echo “deb [signed-by=/etc/apt/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main” | sudo tee /etc/apt/sources.list.d/kubernetes.list

apt-get install -y kubelet kubeadm kubectl

apt-mark hold kubelet kubeadm kubectl

#设置kubelet自启动
sudo systemctl enable --now kubelet
····

安装runc
学新通

#安装runc
sudo install -m 755 runc.amd64 /usr/local/bin/runc
#检查是否安装成功
runc -v 

学新通
初始化master(只需要在master执行)

kubeadm init --node-name=master --image-repository=registry.aliyuncs.com/谷歌_containers --cri-socket=unix:///var/run/cri-dockerd.sock --apiserver-advertise-address=192.168.192.137 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12


--node-name=master 节点名称就是当前主机的hostname
--image-repository=registry.aliyuncs.com/谷歌_containers 设置为阿里镜像
--cri-socket=unix:///var/run/cri-dockerd.sock # 这是指定容器运行时
--apiserver-advertise-address=192.168.56.50 # 为API server设置广播地址,这里选择本机的ipv4地址,这里不希望API SERVER设置在其他node上的话就不要改为其他地址。
--pod-network-cidr=10.244.0.0/16 # 指明 pod 网络可以使用的 IP 地址段,暂时不清楚的可以先不管就用这个值。
--service-cidr=10.96.0.0/12 # 为服务的虚拟 IP 地址另外指定 IP 地址段,暂时不清楚的可以先不管就用这个值。

安装成功会显示
学新通
按提示执行

mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config

export KUBECONFIG=/etc/kubernetes/admin.conf

export KUBECONFIG=/etc/kubernetes/admin.conf >> /etc/profile

source /etc/profile

安装配置cni网络插件flannel
学新通

wget https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml

kubectl apply -f kube-flannel.yml

让Node节点加入Master,下面的命令在master安装成功后会有

kubeadm join 192.168.192.137:6443 --token ut7ln6.s8crplgxko21wqyv --discovery-token-ca-cert-hash sha256:495ffbf5e18082d0d88e0c0abb3e68d0a841eef257d8b3a844763efc951e4704

加入后执行

echo "export KUBECONFIG=/etc/kubernetes/kubelet.conf" >> /etc/profile

source /etc/profile

在三台主机上都可以查询节点状态

kubectl get nodes

学新通
查看k8s状态命令

systemctl status kubelet

安装k8s界面(在master执行)

Dashboard

学新通
先下载文件,需要将ClusterIP改成NodePort才能非本地访问

wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml

修改recommended.yaml

vim recommended.yaml 
在下面位置添加
type: NodePort

学新通
查看 Dashboard 暴露外网端口
学新通
创建账户,生成token

vim dashboard-account.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

执行文件

kubectl apply -y dashboard-account.yaml

获取账户token

kubectl -n kubernetes-dashboard create token admin-user

学新通
输入token登录查看
https://192.168.192.137:31711
学新通
学新通
参考文章
http://www.uml.org.cn/yunjisuan/2022051844.asp
https://blog.csdn.net/weixin_39246554/article/details/128123553

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhibbcch
系列文章
更多 icon
同类精品
更多 icon
继续加载