Kubernetes(K8s)基本环境部署

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

此处只做学习使用,配置单master环境。

一、环境准备

1、ip+主机规划(准备五台新机)==>修改各个节点的主机名

注意:关闭防火墙与selinux

节点 主机名 ip 身份
joshua1

kubernetes-master.openlab.cn

192.168.134.151 master
joshua2 kubernetes-work1.openlab.cn 192.168.134.152 work1
joshua3 kubernetes-work2.openlab.cn 192.168.134.153 work2
joshua4 kubernetes-work3.openlab.cn 192.168.134.154 work3
joshua5 kubernetes-register.openlab.cn 192.168.134.155 register

2、设置hosts解析

tail -n 5 /etc/hosts

192.168.134.151 kubernetes-master.openlab.cn kubernetes-master
192.168.134.152 kubernetes-work1.openlab.cn kubernetes-work1
192.168.134.153 kubernetes-work2.openlab.cn kubernetes-work2
192.168.134.154 kubernetes-work3.openlab.cn kubernetes-work3
192.168.134.155 kubernetes-register.openlab.cn kubernetes-register

3、时间同步

yum install chrony -y
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
启动
systemctl enable --now chronyd
chronyc sources

4、禁用swap分区

 sed -i 's/.*swap.*/#&/' /etc/fstab
临时关闭
swapoff -a # 非常重要,如果没有设置,则报错

5、修改其内核参数

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
执行以下几个命令
    modprobe br_netfilter
	modprobe overlay
	sysctl -p /etc/sysctl.d/k8s.conf

6、配置ipvs功能

    安装ipset和ipvsadm:yum install ipset ipvsadm -y
    添加需要加载的模块写入脚本文件
	cat <<EOF >  /etc/sysconfig/modules/ipvs.modules
	#!/bin/bash
	modprobe -- ip_vs
	modprobe -- ip_vs_rr
	modprobe -- ip_vs_wrr
	modprobe -- ip_vs_sh
	modprobe -- nf_conntrack
	EOF

    为脚本文件添加执行权限
	chmod +x /etc/sysconfig/modules/ipvs.modules

    执行脚本文件
	/bin/bash /etc/sysconfig/modules/ipvs.modules

	查看对应的模块是否加载成功
	lsmod | grep -e ip_vs -e nf_conntrack_ipv4

二、容器环境准备

1、定制软件源并且安装最新版docker

yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install docker-ce -y

2、配置docker加速器并且启动

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


systemctl daemon-reload 
systemctl enable --now docker

三、cri环境准备

解压包并且放到指定位置
tar xf cri-dockerd-0.3.4.amd64.tgz -C /usr/local/
mv /usr/local/cri-dockerd/cri-dockerd /usr/local/bin/
检查软件版本
cri-dockerd --version
cri-dockerd 0.3.4 (e88b1605)
配置文件的修改
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


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
启动服务
systemctl daemon-reload
systemctl enable --now cri-dockerd.service

四、harbor仓库配置(只在仓库那台机子上操作)

1、安装docker-compose
install -m 755 docker-compose-linux-x86_64 /usr/local/bin/docker-compose
查看版本
docker-compose version
Docker Compose version v2.20.3
2、安装harbor软件
mkdir -p /data/server/
tar xf harbor-offline-installer-v2.8.4.tgz -C /data/server/
cd /data/server/harbor/
docker load -i harbor.v2.8.4.tar.gz # 导入镜像
cp harbor.yml.tmpl harbor.yml
修改配置文件(以下只列出修改过的地方)
hostname: kubernetes-register.openlab.cn
# https related config
#https:
  # https port for harbor, default is 443
#  port: 443
  # The path of cert and key files for nginx
#  certificate: /your/certificate/path
#  private_key: /your/private/key/path
data_volume: /data/server/harbor/data

./install.sh # 启动

定制一个服务启动文件
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
启动脚本
systemctl daemon-reload
systemctl enable  --now harbor.service


测试:在除仓库外集群的任意一个节点测试
docker pull busybox
docker login kubernetes-register.openlab.cn -u admin -p Harbor12345
docker tag busybox:latest kubernetes-register.openlab.cn/library/busybox:latest
docker push kubernetes-register.openlab.cn/library/busybox:latest

五、k8s的集群初始化

1、定制软件源
	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

2、安装软件,然后设置自启动 
yum install kubeadm kubectl kubelet -y
systemctl enable --now kubelet

3、记得在仓库中创建项目,google_containers ,然后编写脚本(此处我们使用的kubernetes版本为1.28.1),最后要执行脚本
cat images.sh 
#!/bin/bash

images=$(kubeadm config images list --kubernetes-version=1.28.1 | 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

sh images.sh # 执行脚本

4、初始化master节点
kubeadm init --kubernetes-version=1.28.1 \  # 自己使用的版本
--apiserver-advertise-address=192.168.134.151 \  # 自己的master节点ip
--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  # 非常重要,不可删除

5、初始化成功后悔提示下一步安装步骤(根据自己初始化后提示的命令来安装)
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

6、加入work节点(先在master节点上执行) ==> 接着在多个work节点执行
kubeadm join 192.168.134.151:6443 --token hgxtuj.gehto17fynyiglxy --cri-socket=unix:///var/run/cri-dockerd.sock --discovery-token-ca-cert-hash sha256:00e2bac5c90162ac991e9eff77fdceaa331cb0c1b9cd170186be3587dd5e964d # 一切按照自己的ip和初始化之后给定的值来加入

7、在master的环境文件中加入以下内容
echo "source <(kubectl completion bash)" >> ~/.bashrc
echo "source <(kubeadm completion bash)" >> ~/.bashrc
source ~/.bashrc

8、配置网络环境
下载kube-flannel.yml

# cat 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

sh flannel.sh  # 脚本启动

sed -i '/ image:/s#docker.io/flannel#kubernetes-register.openlab.cn/google_containers#' kube-flannel.yml  # 修改内容

应用配置文件
kubectl apply -f kube-flannel.yml # 应用配置文件

9、如果上面的步骤都没有出问题,那么整体部署基本成功

六、验证(执行以下命令,所有状态都为running才是真正的部署成功)

 kubectl get pod -n kube-system

Kubernetes(K8s)基本环境部署,kubernetes,容器,云原生

七、还可以将这个工作环境在工作节点上运行

scp  -r  $HOME/.kube   kubernetes-work1.openlab.cn:$HOME/

然后使用kubectl get pod -n kube-system查看是否状态全部running,如果全部running即可以运行。文章来源地址https://www.toymoban.com/news/detail-684714.html

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

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

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

相关文章

  • 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(K8S)详解

    1.1.1 Kubernetes是什么及作用 Kubernetes(K8S)是Google在2014年发布的一个开源项目,用于自动化容器化应用程序的部署、扩展和管理。 Kubernetes通常结合docker容器工作,并且整合多个运行着docker容器的主机集群。 官网地址 Kubernetes 中文社区 Kubernetes(k8s)中文文档 目录_Kubernetes中文社

    2024年02月05日
    浏览(60)
  • 【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日
    浏览(44)
  • 抛弃对外依赖,OpenEular(欧拉)操作系统为企业搭建独立的K8S集群环境! 容器编排平台丨Kubernetes 丨自主可控的云计算系统丨容器化技术丨 新一代云计算基础设施丨分布式应用部署和管理

    需要提前准备好OpenEular操作系统虚拟机3台,本文使用模板机创建。 如今,随着云计算、大数据、人工智能等技术的快速发展,越来越多的企业开始使用容器化技术来提高开发和交付速度。而Kubernetes则成为了最受欢迎的容器编排平台之一。然而,许多企业往往将Kubernetes部署在

    2024年02月11日
    浏览(59)
  • 容器技术,1. Docker,2. Kubernetes(K8s):

    目录 容器技术 1. Docker: 2. Kubernetes(K8s): Docker和Kubernetes 容器的主要应用场景有哪些? 有效的将单个操作系统的资源划分到孤立的组中,以便更好的在孤立的组之间平衡有冲突的资源使用需求,这种技术就是容器技术。 容器技术指通过在物理主机操作系统上创建一个一个

    2024年02月11日
    浏览(44)
  • Kubernetes(K8s):容器化应用的航空母舰

    Kubernetes(K8s)是一个开源的容器编排系统,它的出现就像是为容器化应用提供了一艘强大的航空母舰。在这艘母舰上,你的应用容器就像是一架架战斗机,Kubernetes负责指挥它们起飞、飞行、降落,确保它们能在正确的时间、正确的地点执行任务。 Pod: Kubernetes的基本飞行编队

    2024年04月08日
    浏览(49)
  • Kubernetes(k8s)容器编排Pod介绍和使用

    Pod是kubernetes中你可以创建和部署的最小也是最简的单位,一个Pod代表着集群中运行的一个进程。 Pod有两个必须知道的特点 通过yaml文件或者json描述Pod和其内容器的运行环境和期望状态,例如一个最简单的运行nginx应用的pod,定义如下 3.1.1 参数描述 下面简要分析一下上面的

    2024年02月08日
    浏览(54)
  • kubernetes(k8s)为容器和 Pod 分配内存资源

    展示如何将内存请求(request)和内存限制(limit)分配给一个容器。 我们保障容器拥有它请求数量的内存,但不允许使用超过限制数量的内存。 创建新的命名空间 编辑yaml文件 配置文件的 args 部分提供了容器启动时的参数。 “–vm-bytes”, “150M” 参数告知容器尝试分配 15

    2024年02月15日
    浏览(37)
  • Kubernetes (K8s) 解读:微服务与容器编排的未来

    🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🐅🐾猫头虎建议程序员必备技术栈一览表📖: 🛠️ 全栈技术 Full Stack : 📚 MERN/MEAN/MEVN Stack | 🌐 Jamstack | 🌍 GraphQL | 🔁 RESTful API | ⚡ WebSockets | 🔄 CI/CD | 🌐 Git Version Control | 🔧 DevOps 🌐 前端技术 Frontend : 🖋️ HTML CSS |

    2024年02月09日
    浏览(32)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包