Kubernetes集群部署与实践

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

本博客链接:https://security.blog.csdn.net/article/details/128840528

一、提要

部署Kubernetes集群至少需要3台服务器,其中至少要有1个服务器做master节点,至少要有1个服务器做node节点,且节点名称是唯一的。

当集群中只有一个master节点时,如果其出现了故障,会导致Kubernetes的控制平面完全失效。如要保证Kubernetes集群的高可靠性,可以设置多个master,当其中部分master出现故障时,其他master还可以管理整个集群。

因此,我们这里使用三台服务器部署,可以有2种部署方案,2个master+1个node,或者1个master+2个node,这里我们使用后一种方式。

三台服务器:

master,192.168.153.145
node1,192.168.153.146
node2,192.168.153.147

二、部署

修改主机名

# master机器执行命令
hostnamectl set-hostname master

# node1机器执行命令
hostnamectl set-hostname node1

# node2机器执行命令
hostnamectl set-hostname node2

关闭防火墙:

# 3台机器都执行
systemctl stop firewalld
systemctl disable firewalld

关闭selinux:

# 3台机器都执行
sed -i 's/enforcing/disabled/' /etc/selinux/config

关闭swap分区:

# 3台机器都执行
vim /etc/fstab
注释掉该行:/dev/mapper/centos-swap

编辑/etc/hosts文件,新增以下内容:

# 3台机器都执行
192.168.153.145 master master
192.168.153.146 node1 node1
192.168.153.147 node2 node2

创建并编辑/etc/sysctl.d/k8s.conf,新增以下内容:

# 主要是为了将桥接的IPv4流量传递到iptables
# 只在master机器上执行
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1

执行命令:

# 只在master机器上执行
sysctl --system

配置时间同步:

# 3台机器都执行
yum -y install chrony

编辑/etc/chrony.conf文件,新增以下内容:

# 3台机器都执行
pool time1.aliyun.com iburst

执行命令:

# 3台机器都执行
systemctl enable --now chronyd

免密认证:

# 只在master机器上执行
ssh-keygen -t rsa
ssh-copy-id master
ssh-copy-id node1
ssh-copy-id node2

重启机器:

# 3台机器都执行
reboot

安装docker:

# 3台机器都执行
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 -y install docker-ce
systemctl start docker
systemctl enable docker
docker -v

创建并编辑/etc/yum.repos.d/kubernetes.repo,新增以下内容:

# 主要是为了添加Kubernetes的源
# 3台机器都执行
[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

安装kubeadm、kubelet、kubectl:
注:1.24以上版本已经放弃docker,如果安装,k8s在初始化时会报错

# 3台机器都执行
yum install -y kubelet-1.23.6 kubeadm-1.23.6 kubectl-1.23.6
systemctl enable kubelet

执行命令:

# 只在master机器上执行
docker pull coredns/coredns:1.8.5
docker tag coredns/coredns:1.8.5 registry.aliyuncs.com/google_containers/coredns:v1.8.5

创建并编辑/etc/docker/daemon.json,新增以下内容:

# 3台机器都执行
{
    "exec-opts": ["native.cgroupdriver=systemd"]
}

执行命令:

# 3台机器都执行
systemctl daemon-reload
systemctl restart docker
systemctl restart kubelet

部署Kubernetes master节点:

# 只在master机器上执行
kubeadm init  \
--apiserver-advertise-address=192.168.153.145 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.23.6 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16

-----------------------单行用于复制------------------------------
kubeadm init --apiserver-advertise-address=192.168.153.145 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.23.6 --service-cidr=10.1.0.0/16 --pod-network-cidr=10.244.0.0/16

如有问题通过百度解决,漫长等待后,记录下以下值:

kubeadm join 192.168.153.145:6443 --token zqlnxn.b8110o37bp5kwinl \
        --discovery-token-ca-cert-hash sha256:69cf2bd1bf87495d1e2e5dc11b3736151feaf00e38a59ea66b276007a163a0aa

如下图所示:

Kubernetes集群部署与实践

执行命令:

# 只在master机器上执行
echo 'export KUBECONFIG=/etc/kubernetes/admin.conf' > /etc/profile.d/k8s.sh
source /etc/profile.d/k8s.sh

安装Pod网络插件:

# 只在master机器上执行
# 网上找到kube-flannel.yml下载下来之后手动安装
kubectl apply -f /root/kube-flannel.yml

生成worker节点用来加入集群的校验token:

# 只在master机器上执行
kubeadm token create --print-join-command
kubeadm join 192.168.153.145:6443 --token zqlnxn.b8110o37bp5kwinl --discovery-token-ca-cert-hash sha256:69cf2bd1bf87495d1e2e5dc11b3736151feaf00e38a59ea66b276007a163a0aa 

加入Kubernetes的Node节点:

# 在两个node机器上执行
echo "1" > /proc/sys/net/bridge/bridge-nf-call-iptables
kubeadm join 192.168.153.145:6443 --token zqlnxn.b8110o37bp5kwinl --discovery-token-ca-cert-hash sha256:69cf2bd1bf87495d1e2e5dc11b3736151feaf00e38a59ea66b276007a163a0aa 

master绑定:

# 在两个node机器上执行
echo "export KUBECONFIG=/etc/kubernetes/kubelet.conf" >> /etc/profile
source /etc/profile

查看节点状态(三台机器均可查看),如下图所示:

Kubernetes集群部署与实践

至此,如果解决完所有报错,则部署结束。

三、测试Kubernetes集群

执行命令:

# 只在master机器上执行
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get pod,svc

如图所示:

Kubernetes集群部署与实践

浏览器访问:

Kubernetes集群部署与实践

四、Kubernetes实践

以下只在master机器上执行

4.1、Deployment资源部署

集群上运行Nginx镜像:

kubectl run nginx --image=nginx

查看部署的Nginx应用:

kubectl get deployments.apps nginx

查看Nginx部署的详细信息及过程:

kubectl describe deploy nginx

查看Nginx的ReplicaSet资源:

# DESIRED-副本数期望值,CURRENT-当前副本数,READY-就绪状态的副本数,AGE-已启动时间
kubectl get rs

查看Nginx的Pod资源:

kubectl get pod -o wide
4.2、Deployment日志查看

查看Nginx的应用日志:

kubectl logs nginx-85b98978db-kxvn6

Kubernetes集群部署与实践

4.3、Deployment资源执行

通过kubectl进入Nginx应用对应的容器:

kubectl exec -it nginx-85b98978db-kxvn6 bash

查看Service和Pod的映射关系:

kubectl get endpoints
4.4、Deployment资源扩展

扩展Nginx应用的副本数为3(原来是1):

kubectl scale deployment nginx --replicas=3

扩展后查看Nginx应用的Deployment、ReplicaSet、Pod、Endpoints资源:

kubectl get deployment.apps nginx
kubectl get rs
kubectl get pod
kubectl get ep

Kubernetes集群部署与实践

4.5、资源删除

删除对应的Deployment资源(通过kubectl run启动的):

kubectl rollout undo deploy nginx

检验删除结果:

kubectl get pod

删除对应的Service资源(通过kubectl apply启动的):

kubectl delete -f /tmp/nginx.svc.yml
4.6、故障排查

查看Nginx的应用日志:

kubectl logs nginx-85b98978db-kxvn6

输出资源的详细信息:文章来源地址https://www.toymoban.com/news/detail-401333.html

kubectl describe pod nginx-85b98978db-kxvn6

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

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

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

相关文章

  • Kubernetes 部署 StarRocks 集群

    StarRocks简介 官方链接🔗 https://docs.starrocks.io/zh-cn/latest/introduction/what_is_starrocks 系统架构图 来源于官网:https://docs.starrocks.io/zh-cn/latest/introduction/Architecture 安装部署StarRocks 手动部署 官方链接🔗 https://docs.starrocks.io/zh-cn/latest/quick_start/Deploy 通过 Docker部署 官网链接🔗 https://doc

    2023年04月11日
    浏览(50)
  • Kubernetes部署Nacos集群

    master: 11.0.1.3 node: 11.0.1.4,11.0.1.5(nfs) nfs: 11.0.1.5 安装nfs-utils和rpcbind nfs客户端和服务端都安装nfs-utils包 创建共享目录 编辑/etc/exports文件添加如下内容 启动服务 启动顺序一定是rpcbind-nfs,否则有可能出现错误 先从github上拉取nacos的代码: 内容结构如下: 因为StorageClass可以实现自

    2024年02月03日
    浏览(37)
  • 【云原生|Kubernetes】02-Kubeadm安装部署Kubernetes集群

    前面简单介绍了Kubernetes的相关架构及其组件,这一章节我们将介绍如何快速搭建Kubernetes的集群,这里我们将使用官方支持的用于部署 Kubernetes 的工具— kubeadm。 主机名 ip地址 节点类型 系统版本 master.example.com 192.168.194.128 master,etcd centos7.x node1.example.com 192.168.194.130 node1 cent

    2024年02月03日
    浏览(42)
  • 一文秒懂!腾讯云ES HTTPS 集群访问通信最佳实践

    作者: 吴容,腾讯云Elasticsearch高级开发工程师 Elasticsearch提供了多种数据访问安全的方式,如用户名密码校验、api_key等。但是依然无法保障数据传输过程中的安全性问题。而HTTPS协议,则是一种以安全为目的的HTTP通道,在HTTP的基础上通过传输加密和身份认证等机制来保障数

    2024年02月08日
    浏览(58)
  • Kubeadm - K8S1.20 - 高可用集群部署(博客)

    1.系统设置 注意事项: master节点cpu核心数要求大于2 ●最新的版本不一定好,但相对于旧版本,核心功能稳定,但新增功能、接口相对不稳 ●学会一个版本的 高可用部署,其他版本操作都差不多 ●宿主机尽量升级到CentOS 7.9 ●内核kernel升级到 4.19+ 这种稳定的内核 ●部署k8

    2024年02月05日
    浏览(43)
  • 【kubernetes】Etcd集群部署与验证

    前言 :二进制部署kubernetes集群在企业应用中扮演着非常重要的角色。无论是集群升级,还是证书设置有效期都非常方便,也是从事云原生相关工作从入门到精通不得不迈过的坎。通过本系列文章,你将从虚拟机准备开始,到使用二进制方式从零到一搭建起安全稳定的高可用

    2024年02月10日
    浏览(59)
  • kubernetes 1.27.3 集群部署方案

    1.1.1 主机硬件配置说明 cpu 内存 硬盘 角色 主机名 系统版本 8C  8G  1024GB master master01 centos 7.9  8C  16G  1024GB  worker(node)  worker01 centos 7.9  8C  16G  1024GB  worker(node)  worker02 centos 7.9 1.1.2 主机配置 1.1.2.1 主机名配置 由于本次使用3台主机完成kubernetes集群部署,其中1台为master节

    2024年02月15日
    浏览(38)
  • 【云原生】Kubeadmin部署Kubernetes集群

    目录 ​编辑 一、环境准备 1.2调整内核参数 二、所有节点部署docker 三、所有节点安装kubeadm,kubelet和kubectl 3.1定义kubernetes源 3.2开机自启kubelet 四、部署K8S集群 4.1查看初始化需要的镜像 4.2在 master 节点上传 v1.20.11.zip 压缩包至 /opt 目录 4.3复制镜像和脚本到 node 节点,并在 nod

    2024年02月09日
    浏览(34)
  • 使用 Sealos 一键部署 Kubernetes 集群

    Sealos 是一款以 Kubernetes 为内核的 云操作系统发行版 ,使用户能够 像使用个人电脑一样 简单地使用云。 与此同时,Sealos 还提供一套强大的工具,可以便利地管理整个 Kubernetes 集群的生命周期。 Sealos 不仅可以一键安装一个单节点的 Kubernetes 开发环境,还能构建数千节点的生

    2024年02月03日
    浏览(30)
  • kubesphere多集群管理,实现kubernetes多集群同时应用部署

    测试kubesphere多集群管理功能,至少需要两套kubesphere集群环境。 1、准备环境 执行以下命令,集群的节点都需要执行。 2、下载kubesphere安装工具KubeKey 这里我先下载好安装工具,在部署操作系统上进行解压,解压出来就具有了 kk 命令。如果没有执行权限,执行如下命令。 3、准

    2024年02月06日
    浏览(44)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包