一个空间如何做2个网站,wordpress快速清除本地图片,网站建设拍金手指谷哥12,山东潍坊建设银行招聘网站文章目录前言一. 实验环境二. k8s 的介绍三 . k8s的安装3.1 搭建实验环境3.1.1 硬件层面的要求3.1.2 软件层面环境配置3.2 docker的安装3.2.1 搭建docker3.2.2 部署 cri-dockerd3.3 部署k8s3.3.1 配置添加阿里云的yum源3.3.2 安装kubeadm kubelet kubectl3.3.3 k8s-master节点初…
文章目录前言一. 实验环境二. k8s 的介绍三 . k8s的安装3.1 搭建实验环境3.1.1 硬件层面的要求3.1.2 软件层面环境配置3.2 docker的安装3.2.1 搭建docker3.2.2 部署 cri-dockerd3.3 部署k8s3.3.1 配置添加阿里云的yum源3.3.2 安装kubeadm kubelet kubectl3.3.3 k8s-master节点初始化3.3.4 执行成功后会有加入节点的代码然后复制到其他节点进行加入。四. 在已经安全完的k8s上进行测试4.1 安装配置网络4.2 安装配置nginx测试总结前言
大家好又见面了我是沐风晓月本文是专栏【云原生实战】专栏的第5篇文章主要讲解如何从零开始安装kubernetes。 专栏地址【云原生实战】 此专栏是沐风晓月对云原生学习的汇总希望能够加深自己的印象以及帮助到其他的小伙伴。
原本我是写一篇文章叫 prometheus监控kubernetes实战结果发现kubernetes就写了半天近一万字所以把从零开始搭建kubernetes实战单独拿出来作为一篇文章吧。
如果文章有什么需要改进的地方还请大佬不吝赐教。 个人主页我是沐风晓月 个人简介大家好我是沐风晓月双一流院校计算机专业 座右铭 先努力成长自己再帮助更多的人 一起加油进步 欢迎大家这里是CSDN我总结知识的地方喜欢的话请三连有问题请私信 在这里插入图片描述
一. 实验环境
本次的实验环境见下表
操作系统服务器IPhostnamecentos7.6192.168.1.41k8s-mastercentos7.6192.168.1.42k8s-node42
如何查看相应的参数
查看操作系统
[rootmufenggrow ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core) 查看hostname
## 修改hostname
[rootmufenggrow ~]# hostnamectl set-hostname mufenggrow41
[rootmufenggrow ~]# bash
# 查看hostname
[rootmufenggrow41 ~]# hostname
mufenggrow41查看ip
[rootmufenggrow41 ~]# ifconfig |grep inet |awk NR1{print $2}
192.168.1.41
二. k8s 的介绍
Kubernetes 也称为 K8s是Google开发的用于自动部署、扩缩和管理容器化应用程序的开源容器编排器技术。 k8s官网地址https://kubernetes.io
在大流量高并发的场景如何实现应用的快速部署。 比如批量启动20台nginx又如何在流量结束之后关闭这些nginx服务。
一个容器宕机了如何快速发现并立即启动一台新的容器去填补 这些容器的管理问题就是容器编排。
能做容器编排的工具有好几个但k8s肯定是占主导地位的。
搭建k8s的方式我们再这里选择了kubeadm的方式来部署。kubeadm 是官方社区推出的一个用于快速部署kubernetes 集群的工具这个工具能通过两条指令完成一个kubernetes 集群的部署
创建一个Master 节点kubeadm init将Node 节点加入到当前集群中$ kubeadm join Master 节点的IP 和端口
三 . k8s的安装
3.1 搭建实验环境
搭建实验环境包含软件层面和硬件层面
3.1.1 硬件层面的要求
两台centos7的操作系统k8s-master cpu核心数为2两台主机可以ping通且能ping通外网硬盘设置为30G以上 查看cpu的核心数
[rootmufenggrow ~]# lscpu |grep CPU(s)
CPU(s): 2
On-line CPU(s) list: 0,1
也可以用
[rootmufenggrow ~]# cat /proc/cpuinfo |grep cpu cores
cpu cores : 2
cpu cores : 2
3.1.2 软件层面环境配置
这里需要主要的是用几台服务器操作我们就需要设置几台服务器的环境
1 设置主机名见名知意
让192.168.1.41为k8s-master设置主机名
[rootmufenggrow ~]# hostnamectl set-hostname k8s-master
[rootmufenggrow ~]# bash
[rootk8s-master ~]# hostname
k8s-master
192.168.1.42 为k8s-node 设置主机名
[rootmufeng ~]# hostnamectl set-hostname k8s-node42
[rootmufeng ~]# bash
[rootk8s-node42 ~]# hostname
k8s-node42
2 设置/etc/hosts 一对一的映射关系
[rootk8s-master ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
[rootk8s-master ~]# cat /etc/hosts EOF
192.168.1.41 k8s-master192.168.1.42 k8s-node42
EOF
[rootk8s-master ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.41 k8s-master
192.168.1.42 k8s-node42
3 设置时间同步 我这里只截取了一台服务器执行的代码因为两台要同步做所以另一台执行的是一样的需要两台同步执行一样的操作
[rootk8s-master ~]# systemctl start chronyd
[rootk8s-master ~]# systemctl enable chronyd
[rootk8s-master ~]# date
2023年 02月 15日 星期三 10:46:09 CST
[rootk8s-master ~]#
4 关闭防火墙和selinux
[rootk8s-master ~]# systemctl stop firewalld
[rootk8s-master ~]# setenforce 0这里要注意 setenforce 0 只是临时关闭如果要永久关闭需要到配置文件中设置
配置文件路径 /etc/selinux/config
禁用swap空间
kubernetes要求每个节点都要禁用swap设备
临时关闭
[rootk8s-master ~]# swapoff -a
永久关闭
vim /etc/fstab
注释掉 /dev/mapper/centos-swap swap
#/dev/mapper/centos-swap swap永久关闭需要重启系统。
6 修改内核参数
# 修改linux的内核采纳数添加网桥过滤和地址转发功能
cat /etc/sysctl.d/k8s.conf EOF
net.bridge.bridge-nf-call-ip6tables 1
net.bridge.bridge-nf-call-iptables 1
EOF
重新加载配置
# sysctl --system3.2 docker的安装
因为k8s最终的管理是容器所以我们需要再这里先安装docker,每台机器都需要安装。
3.2.1 搭建docker
1 设置 repo
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo若没有yum-config-manager 需要先安装
[rootk8s-node42 ~]# yum install yum-utils2 设置国内镜像并重启daemon
# mkdir /etc/docker
cat /etc/docker/daemon.json EOF
{registry-mirrors: [https://ywrd8tun.mirror.aliyuncs.com]
}
EOF下载docker的repo包并安装
[rootk8s-node42 ~]# yum install wget
[rootk8s-master ~]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
3 开始安装
[rootk8s-node42 ~]# yum install -y docker-ce
[rootk8s-master ~]# systemctl start docker
[rootk8s-master ~]# systemctl enable docker[rootk8s-master ~]# docker --version
Docker version 23.0.1, build a5ee5b1
3.2.2 部署 cri-dockerd
从kubernetes 1.24开始dockershim已经从kubelet中移除但因为历史问题docker不支持kubernetes主推的CRI容器运行时接口标准所以docker不能再作为kubernetes的容器运行时了即从kubernetesv1.24开始不再使用docker了。
但是如果想继续使用docker的话可以在kubelet和docker之间加上一个中间层cri-docker。cri-docker是一个支持CRI标准的shim垫片。一头通过CRI跟kubelet交互另一头跟docker api交互从而间接的实现了kubernetes以docker作为容器运行时。
技术的发展得益于人受限于人。
开源地址 https://github.com/Mirantis/cri-dockerd 下载地址 https://github.com/Mirantis/cri-dockerd/releases 下载并上传进行解压
#使用rz命令上传
# rz
[rootk8s-node42 ~]# ls
anaconda-ks.cfg cri-dockerd-0.3.1.amd64.tgz
[rootk8s-node42 ~]# tar xf cri-dockerd-0.3.1.amd64.tgz
[rootk8s-node42 ~]# cp cri-dockerd/cri-dockerd /usr/bin/
[rootk8s-node42 ~]# chmod x /usr/bin/cri-dockerd
[rootk8s-node42 ~]#
配置启动文件如下
cat EOF /usr/lib/systemd/system/cri-docker.service
[Unit]
DescriptionCRI Interface for Docker Application Container Engine
Documentationhttps://docs.mirantis.com
Afternetwork-online.target firewalld.service docker.service
Wantsnetwork-online.target
Requirescri-docker.socket
[Service]
Typenotify
ExecStart/usr/bin/cri-dockerd --network-plugincni --pod-infra-container-imageregistry.aliyuncs.com/google_containers/pause:3.7
ExecReload/bin/kill -s HUP $MAINPID
TimeoutSec0
RestartSec2
Restartalways
StartLimitBurst3
StartLimitInterval60s
LimitNOFILEinfinity
LimitNPROCinfinity
LimitCOREinfinity
TasksMaxinfinity
Delegateyes
KillModeprocess
[Install]
WantedBymulti-user.target
EOF
⽣成 socket ⽂件执行如下命令
cat EOF /usr/lib/systemd/system/cri-docker.socket
[Unit]
DescriptionCRI Docker Socket for the API
PartOfcri-docker.service
[Socket]
ListenStream%t/cri-dockerd.sock
SocketMode0660
SocketUserroot
SocketGroupdocker
[Install]
WantedBysockets.target
EOF
启动 cri-docker 并设置开机⾃动启动
[rootk8s-node42 ~]# systemctl daemon-reload
[rootk8s-node42 ~]# systemctl enable cri-docker --now
Created symlink from /etc/systemd/system/multi-user.target.wants/cri-docker.service to /usr/lib/systemd/system/cri-docker.service.
[rootk8s-node42 ~]# systemctl is-active cri-docker
active
[rootk8s-node42 ~]# 3.3 部署k8s
3.3.1 配置添加阿里云的yum源
cat /etc/yum.repos.d/kubernetes.repo EOF
[kubernetes]
nameKubernetes
baseurlhttps://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled1
gpgcheck0
repo_gpgcheck0
gpgkeyhttps://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
3.3.2 安装kubeadm kubelet kubectl
yum install -y kubelet-1.25.0 kubeadm-1.25.0 kubectl-1.25.0查看版本并设置开机自启动
[rootk8s-master ~]# kubeadm version
kubeadm version: version.Info{Major:1, Minor:25, GitVersion:v1.25.0, GitCommit:a866cbe2e5bbaa01cfd5e969aa3e033f3282a8a2, GitTreeState:clean, BuildDate:2022-08-23T17:43:25Z, GoVersion:go1.19, Compiler:gc, Platform:linux/amd64}
[rootk8s-master ~]# systemctl enable kubelet
Created symlink from /etc/systemd/system/multi-user.target.wants/kubelet.service to /usr/lib/systemd/system/kubelet.service.
[rootk8s-master ~]#
到目前位置所有的操作都是在全部节点上操作的。接下来我们开始初始化k8s-master的节点此操作只在k8s-master上执行
3.3.3 k8s-master节点初始化
kubeadm 使用 eth0 的默认网络接口通常是内网IP做为 Master 节点的 advertise address .所以这里的IP地址要设置为你自己的IP地址
kubeadm init \
--apiserver-advertise-address192.168.1.41 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.25.0 \
--service-cidr10.10.0.0/12 \
--pod-network-cidr172.17.0.0/16 \
--cri-socket /var/run/cri-dockerd.sock \
--ignore-preflight-errorsall
注释
--apiserver-advertise-address192.168.1.41
这个参数就是master主机的IP地址--image-repositoryregistry.aliyuncs.com/google_containers
这个是镜像地址由于国外地址无法访问故使用的阿里云仓库地址registry.aliyuncs.com/google_containers--kubernetes-versionv1.25.0
这个参数是下载的k8s软件版本号--service-cidr10.10.0.0/12
无需更改--pod-network-cidr172.17.0.0/16
Specify range of IP addresses for the pod network. If set, the control plane will automatically allocate CIDRs for every node.
该参数指明了 Pod 网络的 CIDR以用于 Node 相关配置若执行中出现问题想要重新执行可以先运行
[rootk8s-master ~]# kubeadm reset -f3.3.4 执行成功后会有加入节点的代码然后复制到其他节点进行加入。
按照下图提示在k8s-master上创建必要的文件然后在用最后的join把别的加点加入 mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config
尤其注意最后一条cri-socket 这条容易漏掉。
kubeadm join 192.168.1.41:6443 --token 9rmt8j.2pqoh7drm68ns249 \--discovery-token-ca-cert-hash sha256:ff558174c47aba532fef2920f80e1f48976d4712a970eba1a7fac0428c8373ab--cri-socket /var/run/cri-dockerd.sock[rootk8s-master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master NotReady control-plane 5m5s v1.25.0
k8s-node42 NotReady none 75s v1.25.0
[rootk8s-master ~]#
接下来需要配置网络
四. 在已经安全完的k8s上进行测试
4.1 安装配置网络
上传需要的网络包 在每个节点上都要上传
每个节点手动通过docker离线加载镜像
37 docker load -i calico~cni~v3.24.3.tar.gz 38 docker load -i calico~kube~controllers~v3.24.3.tar.gz 39 docker load -i calico~node~v3.24.3.tar.gz
在master安装 网络插件
[rootk8s-master ~]# kubectl apply -f calico.yaml
poddisruptionbudget.policy/calico-kube-controllers created
serviceaccount/calico-kube-controllers created再次执行这里显示的就是ready 4.2 安装配置nginx测试
创建nginx服务
[rootk8s-master ~]# kubectl create deployment nginx --imagenginx
deployment.apps/nginx created暴露端口
[rootk8s-master ~]# kubectl expose deployment nginx --port80 --typeNodePort
service/nginx exposed
[rootk8s-master ~]# kubectl get pod,svc
NAME READY STATUS RESTARTS AGE
pod/nginx-76d6c9b8c-hw6bz 1/1 Running 0 16sNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.0.0.1 none 443/TCP 17m
service/nginx NodePort 10.15.105.20 none 80:32587/TCP 7s测试
[rootk8s-master ~]# curl 127.0.0.1:32587
!DOCTYPE html
html
head
titleWelcome to nginx!/title
style
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
/style
/head
body
h1Welcome to nginx!/h1
pIf you see this page, the nginx web server is successfully installed and
working. Further configuration is required./ppFor online documentation and support please refer to
a hrefhttp://nginx.org/nginx.org/a.br/
Commercial support is available at
a hrefhttp://nginx.com/nginx.com/a./ppemThank you for using nginx./em/p
/body
/html
总结
以上就是无坑版本最新的k8s实战的全部过程了耗时4个小时终于完成。看到这里的小伙伴给点个三连呀。
每日鸡汤 人活到极致一定要素与简 ✨原创不易还希望各位大佬支持一下\textcolor{blue}{原创不易还希望各位大佬支持一下}原创不易还希望各位大佬支持一下 点赞你的认可是我创作的动力\textcolor{green}{点赞你的认可是我创作的动力}点赞你的认可是我创作的动力 ⭐️ 收藏你的青睐是我努力的方向\textcolor{green}{收藏你的青睐是我努力的方向}收藏你的青睐是我努力的方向 ✏️ 评论你的意见是我进步的财富\textcolor{green}{评论你的意见是我进步的财富}评论你的意见是我进步的财富