运维高级学习--Kubernetes(K8s 1.28.x)部署

这篇具有很好参考价值的文章主要介绍了运维高级学习--Kubernetes(K8s 1.28.x)部署。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、基础环境配置(所有主机操作)

主机名规划

序号				主机ip				主机名规划
 1			192.168.1.30		kubernetes-master.openlab.cn 	kubernetes-master
 2			192.168.1.31		kubernetes-node1.openlab.cn 	kubernetes-node1
 3			192.168.1.32		kubernetes-node2.openlab.cn 	kubernetes-node2
 4			192.168.1.33		kubernetes-node3.openlab.cn 	kubernetes-node3
 5			192.168.1.34		kubernetes-register.openlab.cn 	kubernetes-register

1.配置IP地址和主机名、hosts解析

#这里只演示一台服务器上的命令,实则五台服务器都要实现
[root@kubernetes-master ~]# vim /etc/hosts
192.168.1.30 kubernetes-master.openlab.cn kubernetes-master
192.168.1.31 kubernetes-node1.openlab.cn kubernetes-node1
192.168.1.32 kubernetes-node2.openlab.cn kubernetes-node2
192.168.1.33 kubernetes-node3.openlab.cn kubernetes-node3
192.168.1.34 kubernetes-register.openlab.cn kubernetes-register

2.关闭防火墙、禁用SELinux

#这里只演示一台服务器上的命令,实则五台服务器都要实现
[root@kubernetes-master ~]# systemctl stop firewalld
[root@kubernetes-master ~]# systemctl disable firewalld
[root@kubernetes-master ~]# sed -i '/^SELINUX=/ c SELINUX=disabled' /etc/selinux/config
[root@kubernetes-master ~]# setenforce 0

3.安装常用软件

#这里只演示一台服务器上的命令,实则五台服务器都要实现
[root@kubernetes-master ~]# yum install -y wget tree bash-completion lrzsz psmisc net-tools vim

4.时间同步

#这里只演示一台服务器上的命令,实则五台服务器都要实现
[root@kubernetes-master ~]# yum install chrony -y
[root@kubernetes-master ~]# vim /etc/chrony.conf
···
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server ntp1.aliyun.com iburst
···
#启动chronyd服务并设置chronyd服务开机自启动
[root@kubernetes-master ~]# systemctl enable --now chronyd
[root@kubernetes-master ~]# chronyc sources

5.禁用Swap分区

#这里只演示一台服务器上的命令,实则五台服务器都要实现
#临时禁用
[root@kubernetes-master ~]# swapoff -a
#永久禁用
[root@kubernetes-master ~]# sed -i 's/.*swap.*/#&/' /etc/fstab

6.修改linux的内核参数

#这里只演示一台服务器上的命令,实则五台服务器都要实现
# 修改linux的内核参数,添加网桥过滤和地址转发功能
[root@kubernetes-master ~]# cat >> /etc/sysctl.d/k8s.conf << EOF
> vm.swappiness=0
> net.bridge.bridge-nf-call-ip6tables = 1
> net.bridge.bridge-nf-call-iptables = 1
> net.ipv4.ip_forward = 1
> EOF

#加载模块
[root@kubernetes-master ~]# modprobe br_netfilter
[root@kubernetes-master ~]# modprobe overlay
#重新加载配置
[root@kubernetes-master ~]# sysctl -p /etc/sysctl.d/k8s.conf

7.配置ipvs功能

#这里只演示一台服务器上的命令,实则五台服务器都要实现
#1.安装ipset和ipvsadm
[root@kubernetes-master ~]# yum install ipset ipvsadm -y
#2.添加需要加载的模块写入脚本文件
[root@kubernetes-master ~]# cat <<EOF>> /etc/sysconfig/modules/ipvs.modulesmodprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
EOF
#3.为脚本文件添加执行权限
[root@kubernetes-master ~]# chmod +x /etc/sysconfig/modules/ipvs.modules
#4.执行脚本文件
[root@kubernetes-master ~]# /bin/bash /etc/sysconfig/modules/ipvs.modules
#5.查看对应的模块是否加载成功
[root@kubernetes-master ~]# lsmod | grep -e ip_vs -e nf_conntrack_ipv4
ip_vs_sh               12688  0 
ip_vs_wrr              12697  0 
ip_vs_rr               12600  0 
ip_vs                 145458  6 ip_vs_rr,ip_vs_sh,ip_vs_wrr
nf_conntrack          139264  1 ip_vs
libcrc32c              12644  3 xfs,ip_vs,nf_conntrack

二、容器环境操作(所有主机操作)

1.定制软件源

[root@kubernetes-master ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
[root@kubernetes-master ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

2.安装最新版docker

[root@kubernetes-master ~]# yum install docker-ce -y

3.配置docker加速器

[root@kubernetes-master ~]# cat >> /etc/docker/daemon.json <<-EOF
> {
> 	"registry-mirrors": [
> 		"http://74f21445.m.daocloud.io",
> 		"https://registry.docker-cn.com",
> 		"http://hub-mirror.c.163.com",
> 		"https://docker.mirrors.ustc.edu.cn"
> 	], 
> 	"insecure-registries": ["kubernetes-register.openlab.cn"],
> 	"exec-opts": ["native.cgroupdriver=systemd"]
> }
> EOF

4.启动docker

[root@kubernetes-master ~]# systemctl daemon-reload 
[root@kubernetes-master ~]# systemctl enable --now docker

三、cri环境操作(所有主机操作)

#下载软件
[root@kubernetes-master ~]#wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.4/cri-dockerd-0.3.4.amd64.tgz
#解压
[root@kubernetes-master ~]# tar xf cri-dockerd-0.3.4.amd64.tgz -C /usr/local/

[root@kubernetes-master ~]# mv /usr/local/cri-dockerd/cri-dockerd /usr/local/bin/
[root@kubernetes-master ~]# cri-dockerd --version
cri-dockerd 0.3.4 (e88b1605)

#定制配置文件
[root@kubernetes-master ~]# cat > /etc/systemd/system/cri-dockerd.service<<-EOF
> [Unit]
> Description=CRI Interface for Docker Application Container Engine
> Documentation=https://docs.mirantis.com
> After=network-online.target firewalld.service docker.service
> Wants=network-online.target
> 
> [Service]
> Type=notify
> ExecStart=/usr/local/bin/cri-dockerd --pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.9
> --network-plugin=cni --cni-conf-dir=/etc/cni/net.d --cni-bin-dir=/opt/cni/bin -
> -container-runtime-endpoint=unix:///var/run/cri-dockerd.sock --cri-dockerd-root-directory=/var/lib/dockershim --docker-endpoint=unix:///var/run/docker.sock --
> cri-dockerd-root-directory=/var/lib/docker
> ExecReload=/bin/kill -s HUP $MAINPID
> TimeoutSec=0
> RestartSec=2
> Restart=always
> StartLimitBurst=3
> StartLimitInterval=60s
> LimitNOFILE=infinity
> LimitNPROC=infinity
> LimitCORE=infinity
> TasksMax=infinity
> Delegate=yes
> KillMode=process
> [Install]
> WantedBy=multi-user.target
> EOF

[root@kubernetes-master ~]# cat > /etc/systemd/system/cri-dockerd.socket <<-EOF
> [Unit]
> Description=CRI Docker Socket for the API
> PartOf=cri-docker.service
> [Socket]
> ListenStream=/var/run/cri-dockerd.sock
> SocketMode=0660
> SocketUser=root
> SocketGroup=docker
> [Install]
> WantedBy=sockets.target
> EOF

#设置服务开机自启
[root@kubernetes-master ~]# systemctl daemon-reload 
[root@kubernetes-master ~]# systemctl enable --now cri-dockerd.service

四、harbor仓库操作(只在仓库机器上执行)

#安装docker-compose
[root@kubernetes-register ~]# install -m 755 docker-compose-linux-x86_64 /usr/local/bin/docker-compose

[root@kubernetes-register ~]# mkdir -p /data/server
[root@kubernetes-register ~]# tar xf harbor-offline-installer-v2.8.4.tgz -C /data/server/

#加载镜像
[root@kubernetes-register ~]# cd /data/server/harbor/
[root@kubernetes-register harbor]# docker load -i harbor.v2.8.4.tar.gz

#修改配置文件
[root@kubernetes-register harbor]# cp harbor.yml.tmpl  harbor.yml
[root@kubernetes-register harbor]# vim harbor.yml
hostname: kubernetes-register.openlab.cn
#https:
#  port: 443
#  certificate: /your/certificate/path
#  private_key: /your/private/key/path
···
harbor_admin_password: 123456
data_volume: /data/server/harbor/data
···
#配置harbor
[root@kubernetes-register harbor]# ./prepare
#启动harbor
[root@kubernetes-register harbor]# ./install.sh

#定制服务启动文件
[root@kubernetes-register harbor]# vim /etc/systemd/system/harbor.service
[Unit]
Description=Harbor
After=docker.service systemd-networkd.service systemd-resolved.service
Requires=docker.service
Documentation=http://github.com/vmware/harbor
[Service]
Type=simple
Restart=on-failure
RestartSec=5
#需要注意harbor的安装位置
ExecStart=/usr/local/bin/docker-compose --file /data/server/harbor/docker-compose.yml up
ExecStop=/usr/local/bin/docker-compose --file /data/server/harbor/docker-compose.yml down
[Install]
WantedBy=multi-user.target

#启动harbor并设置开机自启
[root@kubernetes-register harbor]# systemctl daemon-reload
[root@kubernetes-register harbor]# systemctl enable harbor.service
[root@kubernetes-register harbor]# systemctl restart harbor

#测试仓库,只在k8s集群某一个节点
#拉取镜像
[root@kubernetes-master ~]# docker pull busybox
#登录harbor仓库
[root@kubernetes-master ~]# docker login kubernetes-register.openlab.cn -u admin -p 123456
#将镜像打上标签
[root@kubernetes-master ~]# docker tag busybox:latest kubernetes-register.openlab.cn/library/busybox:latest
#推送镜像到仓库
[root@kubernetes-master ~]# docker push kubernetes-register.openlab.cn/library/busybox:latest

运维高级学习--Kubernetes(K8s 1.28.x)部署,运维,kubernetes

五、k8s集群初始化

定制软件源(所有主机操作)

[root@kubernetes-master ~]# cat > /etc/yum.repos.d/kubernetes.repo << EOF
>[kubernetes]
>name=Kubernetes
>baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
>enabled=1
>gpgcheck=0
>repo_gpgcheck=0
>gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg 
>https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
>EOF

[root@kubernetes-master ~]# yum install kubeadm kubectl kubelet -y

在仓库中新建项目:google_containers
运维高级学习--Kubernetes(K8s 1.28.x)部署,运维,kubernetes
接下来这一步只用在一个主机上操作

[root@kubernetes-master ~]# vim images.sh
#!/bin/bash
images=$(kubeadm config images list --kubernetes-version=1.28.0 | awk -F'/' '{print $NF}')
for i in ${images}
do
  docker pull registry.aliyuncs.com/google_containers/$i
  docker tag registry.aliyuncs.com/google_containers/$i kubernetes-register.openlab.cn/google_containers/$i
  docker push kubernetes-register.openlab.cn/google_containers/$i
  docker rmi registry.aliyuncs.com/google_containers/$i
done
#执行脚本文件
[root@kubernetes-master ~]# sh images.sh

master节点初始化

[root@kubernetes-master ~]# kubeadm init --kubernetes-version=1.28.0 \
> --apiserver-advertise-address=192.168.1.30 \
> --image-repository kubernetes-register.openlab.cn/google_containers \
> --service-cidr=10.96.0.0/12 \
> --pod-network-cidr=10.244.0.0/16 \
> --ignore-preflight-errors=Swap \
> --cri-socket=unix:///var/run/cri-dockerd.sock
···
kubeadm join 192.168.1.30:6443 --token wj0hmh.2cdfzhck6w32quzx \
	--discovery-token-ca-cert-hash sha256:a0b7e59c2e769dc1e2197611ecae1f39d7a0bd19fc25906fe7a5b43199d15cd2
	出现这两行说明初始化成功

[root@kubernetes-master ~]# mkdir -p $HOME/.kube
[root@kubernetes-master ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@kubernetes-master ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config

node节点加入

[root@kubernetes-node1 ~]# kubeadm join 192.168.1.30:6443 --token wj0hmh.2cdfzhck6w32quzx \
> --cri-socket=unix:///var/run/cri-dockerd.sock \
> --discovery-token-ca-cert-hash sha256:a0b7e59c2e769dc1e2197611ecae1f39d7a0bd19fc25906fe7a5b43199d15cd2

#注意的是,每个人的令牌是不一样的

六、k8s环境收尾

命令补全

#放到master主机的环境文件中
[root@kubernetes-master ~]# echo "source <(kubectl completion bash)" >> ~/.bashrc
[root@kubernetes-master ~]# echo "source <(kubeadm completion bash)" >> ~/.bashrc
[root@kubernetes-master ~]# source ~/.bashrc

网络环境(在master主机上)

#下载kube-flannel.yml

[root@kubernetes-master ~]# vim flannel.sh
#!/bin/bash   
for i in $(grep image kube-flannel.yml | grep -v '#' | awk -F '/' '{print $NF}')
do          
        docker pull flannel/$i
        docker tag flannel/$i kubernetes-register.openlab.cn/google_containers/$i
        docker push kubernetes-register.openlab.cn/google_containers/$i
        docker rmi flannel/$i
done

#执行脚本
[root@kubernetes-master ~]# sh flannel.sh
#修改配置文件
[root@kubernetes-master ~]# sed -i '/ image:/s#docker.io/flannel#kubernetes-register.openlab.cn/google_containers#' kube-flannel.yml

#应用配置文件
[root@kubernetes-master ~]# kubectl apply -f kube-flannel.yml

#检查效果
[root@kubernetes-master ~]# kubectl get pod -n kube-system 
NAME                                        READY   STATUS    RESTARTS   AGE
coredns-76f899b8cf-tmdx9                    1/1     Running   0          19m
coredns-76f899b8cf-zvfhg                    1/1     Running   0          19m
etcd-kubernetes-master                      1/1     Running   0          19m
kube-apiserver-kubernetes-master            1/1     Running   0          19m
kube-controller-manager-kubernetes-master   1/1     Running   0          19m
kube-proxy-rhdck                            1/1     Running   0          14m
kube-proxy-tvfh4                            1/1     Running   0          19m
kube-proxy-vjmrs                            1/1     Running   0          14m
kube-proxy-zkwv2                            1/1     Running   0          14m
kube-scheduler-kubernetes-master            1/1     Running   0          19m

#全部都是Running就可以了

扩展:要让kubectl在node节点上也能运行,需要将master上的.kube文件复制到node节点上,即在master节点上执行下面操作:

scp  -r  $HOME/.kube   kubernetes-node1.openlab.cn:$HOME/
scp  -r  $HOME/.kube   kubernetes-node2.openlab.cn:$HOME/
scp  -r  $HOME/.kube   kubernetes-node3.openlab.cn:$HOME/

至此,Kubernetes(K8s 1.28.x)部署完成文章来源地址https://www.toymoban.com/news/detail-675654.html

到了这里,关于运维高级学习--Kubernetes(K8s 1.28.x)部署的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C站首发】全网最新Kubernetes(K8s)1.28版本探秘及部署 基于Containerd容器运行时(100年证书kubeadm)

    序号 操作系统及版本 备注 1 CentOS7u9 需求 CPU 内存 硬盘 角色 主机名 值 8C 8G 1024GB master k8s-master01 值 8C 16G 1024GB worker(node) k8s-worker01 值 8C 16G 1024GB worker(node) k8s-worker02 1.3.1 主机名配置 由于本次使用3台主机完成kubernetes集群部署,其中1台为master节点,名称为k8s-master01;其中2台为wor

    2024年02月08日
    浏览(37)
  • 二进制安装Kubernetes(k8s)v1.28.3

    https://github.com/cby-chen/Kubernetes 开源不易,帮忙点个star,谢谢了 kubernetes(k8s)二进制高可用安装部署,支持IPv4+IPv6双栈。 我使用IPV6的目的是在公网进行访问,所以我配置了IPV6静态地址。 若您没有IPV6环境,或者不想使用IPv6,不对主机进行配置IPv6地址即可。 不配置IPV6,不影

    2024年02月05日
    浏览(47)
  • ​二进制安装Kubernetes(k8s)v1.28.0

    https://github.com/cby-chen/Kubernetes 开源不易,帮忙点个star,谢谢了 kubernetes(k8s)二进制高可用安装部署,支持IPv4+IPv6双栈。 我使用IPV6的目的是在公网进行访问,所以我配置了IPV6静态地址。 若您没有IPV6环境,或者不想使用IPv6,不对主机进行配置IPv6地址即可。 不配置IPV6,不影

    2024年02月05日
    浏览(37)
  • Kubernetes(k8s)实战:Kubernetes(k8s)部署Springboot项目

    wordpress是用于快速搭建博客系统。 该yaml文件创建一个mysql,并且生成一个service,service对外暴露的端口是3306 我们发现,搭建成功了,用浏览器访问192.168.56.101:30493,发现访问成功了! 在集群中,pod之间可以通过service 的name进行访问,不仅仅是ip,这就意味着,service中不仅帮

    2024年02月12日
    浏览(86)
  • 【Kubernetes运维篇】RBAC之创建集群用户管理K8S

    需求:公司新入职两位运维同事,分别是zhangsan、lisi,刚入职肯定不能给K8S管理员权限,所以需要创建两个系统账号,分别对应不同的权限: zhangsan用户 :对uat名称空间拥有管理员权限 lisi用户 :对所有命名空间拥有查看Pod的权限 第一步:生成一个私钥 第二步:生成一个证

    2024年02月16日
    浏览(39)
  • k8s学习(三十六)centos下离线部署kubernetes1.30(单主节点)

    主机ip 用途 192.168.115.120 K8s-normal-master 192.168.115.121 K8s-normal-node01 每台机器都执行 查看内核: 查看操作系统: 下载地址:https://elrepo.org/linux/kernel/el7/x86_64/RPMS/ 上传下载的内核安装包,执行命令: 执行命令: 修改/etc/default/grub GRUB_DEFAULT=saved 改为 GRUB_DEFAULT=0,保存退出 重新加

    2024年04月27日
    浏览(27)
  • Kubernetes[k8s] 最新版1.27.3 - 1.28.0安装教程,使用containerd模式

    公司使用的是交老的k8s版本(1.16),由于老版本的K8s对于现在很多新特性不支持,所以需要升级到新版本。目前2023年7月11日最新版本的k8s是v1.27.3。通过参考官方文档进行k8s部署工作。其中涉及到操作系统配置、防火墙配置、私有镜像仓库等。 推荐一个AI工具:态灵AI: chata

    2024年02月06日
    浏览(31)
  • Kubernetes(K8S)集群部署

    目录 一、创建3台虚拟机 二、为每台虚拟机安装Docker 三、安装kubelet 3.1 安装要求 3.2 为每台服务器完成前置设置 3.3 为每台服务器安装kubelet、kubeadm、kubectl 四、使用kubeadm引导集群 4.1 master服务器 4.2 node1、node2服务器 4.3 初始化主节点 4.4 work节点加入集群 五、token过期怎么办?

    2024年02月07日
    浏览(59)
  • 人人都会Kubernetes(一):告别手写K8s yaml,运维效率提升500%

    随着云计算的迅速发展,容器化技术已成为构建和运行分布式应用程序的关键。而Kubernetes作为容器编排领域的佼佼者,已经成为了云原生应用的标准。它不仅简化了应用程序的部署和管理,而且为开发者和运维人员提供了一套全面的工具集,从容器编排、自动扩缩容、服务发

    2024年01月22日
    浏览(32)
  • Kubernetes - 一键安装部署 K8S(附:Kubernetes Dashboard)

    不知道大伙是如何安装 K8s,特别还是集群的时候,我上一次安装搭建的时候,那个恶心到我了,真的是一步一个脚印走完整个搭建流程,爬了不少坑。 于是,才有了今天的文章,到底有没有可以一键完美部署 k8s 并且附带 Dashboard……?那这么问了肯定是有的,否则岂不是在

    2024年02月03日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包