当前位置: 首页 > news >正文

kubectl基础操作实战-k8s集群安装

专栏介绍

作者与平台

作者:庸子

用户ID:2401_86478612

第一发表平台:CSDN

欢迎来到《Kubernetes架构师之路:系统化学习与实践》专栏!在这个容器化技术主导的时代,Kubernetes已成为云原生应用编排的事实标准,掌握Kubernetes已成为每位开发者和运维工程师的必备技能。

本专栏采用系统化学习方法,从基础概念到高级实践,循序渐进地带您全面掌握Kubernetes技术栈。无论您是刚接触容器技术的初学者,还是希望深入理解Kubernetes架构的资深工程师,这里都将为您提供清晰的学习路径和实用的实战指导。

您将学到什么?

  • 基础理论:深入理解容器、容器编排、Kubernetes核心概念和架构设计
  • 核心组件:掌握etcd、API Server、Controller Manager、Scheduler等核心组件的工作原理
  • 资源管理:学会Pod、Deployment、Service、Ingress等核心资源的创建与管理
  • 网络与存储:理解Kubernetes网络模型和存储方案,解决实际部署中的网络与存储问题
  • 高可用与扩展:构建高可用的Kubernetes集群,实现应用的自动扩展与故障恢复
  • 监控与日志:掌握集群监控、日志收集与应用性能优化方法
  • CI/CD集成:学习如何将Kubernetes与CI/CD流程结合,实现自动化部署
  • 安全实践:了解Kubernetes安全模型,掌握RBAC、网络策略等安全配置

学习特色

  1. 系统化知识体系:从零开始,构建完整的Kubernetes知识框架
  2. 实战导向:每个知识点都配有实际操作案例,让您"学以致用"
  3. 问题驱动:针对实际部署中常见的问题提供解决方案
  4. 最新版本覆盖:基于最新稳定版Kubernetes,紧跟技术发展趋势
  5. 架构师视角:不仅教您"如何做",更解释"为什么这样设计"

无论您是想提升个人竞争力,还是为企业构建高效的云原生基础设施,本专栏都将助您成为真正的Kubernetes专家。让我们一起开启这段激动人心的Kubernetes学习之旅!

立即订阅,开启您的Kubernetes架构师成长之路!

环境准备与基础配置

系统环境Red hat 9.4

主机网段192.168.10.0/24

实验主机

192.168.10.10 master

192.168.10.20 worker01

192.168.10.30 worker02

其中192.168.10.10作为控制平面192.168.10.20,192.168.10.30作为工作节点

基础配置

修改主机名称

修改master节点主机名称

hostnamectl set-hostname master

修改node节点主机名称

hostnamectl set-hostname worker01

修改node节点主机名称

hostnamectl set-hostname worker02

执行bash命令让配置生效

修改主机本地hosts文件

cat >> /etc/hosts << "EOF"

192.168.10.10 master

192.168.10.20 worker01

192.168.10.30 worker02

EOF

关闭防火墙

在实验环境我们为了方便关闭防火墙在生产环境当中我们应当为相对于的服务其设定相对于的防火墙规则

systemctl disable --now firewalld

关闭selinx

sed -ri 's#(SELINUX=)enforcing#\1disabled#' /etc/selinux/config

grep ^SELINUX= /etc/selinux/config

setenforce 0

getenforce

关闭swap交换分区

swapoff -a

sed -ri 's/.*swap.*/#&/' /etc/fstab

配置eopl源

cat >> /etc/yum.repos.d/epel.repo << "EOF"

[epel]

name=Extra Packages for Enterprise Linux $releasever - $basearch

baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/$releasever/Everything/$basearch/

enabled=1

gpgcheck=1

countme=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-$releasever

[epel-debuginfo]

name=Extra Packages for Enterprise Linux $releasever - $basearch - Debug

baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/$releasever/Everything/$basearch/debug/

enabled=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-$releasever

gpgcheck=1

[epel-source]

name=Extra Packages for Enterprise Linux $releasever - $basearch - Source

baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/$releasever/Everything/source/tree/

enabled=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-$releasever

gpgcheck=1

EOF

缓存到本地

yum makecache

查看服务器时区

timedatectl

安装chrony

yum install -y chrony

修改chrony配置文件

vim /etc/chrony.conf

server ntp.aliyun.com iburst

allow 192.168.10.10/24    #本机IP/网段

启动服务设定开机自启动

systemctl enable chronyd  --now

系统内核调优

修改最大文件打开数

cat >> /etc/security/limits.conf << EOF

* soft nofile 65535

* hard nofile 65535

EOF

修改syscat.conf内核参数

cat >> /etc/sysctl.comf << EOF

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_max_tw_buckets = 20480

net.ipv4.tcp_max_syn_backlog = 20480

net.core.netdev_max_backlog = 262144

net.ipv4.tcp_fin_timeout = 20

EOF

配置生效

sysctl -p

开启bridge网桥过滤和安装工具

安装基础工具

yum install -y gcc autoconf sysstat

配置内核参数

cat >> /etc/sysctl.d/k8s.conf  << EOF

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

net.ipv4.ip_forward = 1

EOF

加载内核模块

modprobe br_netfilter && lsmod | grep br_netfilter

生效内核参数

sysctl -p /etc/sysctl.d/k8s.conf

输出示例

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

net.ipv4.ip_forward = 1

安装docker

docker简介

Docker 是一个开源的应用容器引擎,用于开发、发布和运行应用程序。它允许开发者将应用程序及其所有依赖(库、配置文件、环境变量等)打包到一个轻量级、可移植的容器中,实现在任何支持 Docker 的环境中快速部署和运行。

下载yum-utils工具

yum install -y yum-utils

添加阿里docker源

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

列出可以安装的docker版本

yum list docker-ce.x86_64 --showduplicates | sort -r

安装docker-ce社区版本

yum -y install docker-ce-27.2.0-1.el9

配置docker镜像加速源文件

cat >>/etc/docker/daemon.json << EOF

{

  "exec-opts": ["native.cgroupdriver=systemd"],

  "dns": ["8.8.8.8", "114.114.114.114"],

  "registry-mirrors": [

    "https://docker.m.daocloud.io",

    "https://dockerpull.com",

    "https://atomhub.openatom.cn",

    "https://docker.1panel.live",

    "https://docker.chenby.cn"

  ]

}

EOF

启动docker检查服务状态

重读配置文件

systemctl  daemon-reload

设置docker开机自启动

systemctl enable docker

启动docker

systemctl start docker

重启docker

systemctl status docker

安装cri-docker

cri-docker简介

cri-dockerd是为了弥补Docker在Kubernetes中使用时的不足而开发的。自Kubernetes 1.24版本起,Kubernetes移除了对dockershim的支持,转而推荐使用Containerd作为默认的容器运行时。然而,许多用户仍希望继续使用Docker,因此cri-dockerd应运而生,作为Docker与Kubernetes之间的桥梁。

获取安装包

wget -c https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.14/cri-dockerd-0.3.14.amd64.tgz

解压二进制包到/usr/local/bin/

tar -xvf cri-dockerd-0.3.14.amd64.tgz --strip-components=1 -C /usr/local/bin/

获取配置文件

wget -O /etc/systemd/system/cri-docker.service https://raw.githubusercontent.com/Mirantis/cri-dockerd/master/packaging/systemd/cri-docker.service

wget -O /etc/systemd/system/cri-docker.socket https://raw.githubusercontent.com/Mirantis/cri-dockerd/master/packaging/systemd/cri-docker.socket

修改配置文件

vim /etc/systemd/system/cri-docker.service

ExecStart=/usr/local/bin/cri-dockerd --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9 --container-runtime-endpoint=unix:///var/run/cri-dockerd.sock --cri-dockerd-root-directory=/var/lib/dockershim --cri-dockerd-root-directory=/var/lib/docker

vim /etc/systemd/system/cri-docker.socket

ListenStream=/var/run/cri-dockerd.sock

重读配置文件

systemctl daemon-reload

设置cri-docker开机自启动

systemctl enable cri-docker.socket cri-docker.service

启动cri-docker

systemctl start cri-docker.service

安装k8s

配置k8s-repo源

cat >> /etc/yum.repos.d/k8s.repo << EOF

[kubernetes]

name=Kubernetes

baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.31/rpm/

enabled=1

gpgcheck=1

gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.31/rpm/repodata/repomd.xml.key

EOF

下载k8s核心组件

yum install -y kubelet kubeadm kubectl

指定了Kubelet使用的cgroup驱动为systemd

vim /etc/sysconfig/kubelet

KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"

Kubelet开机自启动

systemctl enable kubelet.service

集群配置 以下操作在master节点执行

 kubeadm config images list

kubeadm config print init-defaults > kubeadm-config.yaml

修改文件

vi kubeadm-config.yaml

按照如下修改参数

apiVersion: kubeadm.k8s.io/v1beta4

bootstrapTokens:

- groups:

  - system:bootstrappers:kubeadm:default-node-token

  token: abcdef.0123456789abcdef

  ttl: 24h0m0s

  usages:

  - signing

  - authentication

kind: InitConfiguration

localAPIEndpoint:

  advertiseAddress: 192.168.10.10 #修改为集群初始化的master节点IP地址

  bindPort: 6443

nodeRegistration:

  criSocket: unix:///var/run/cri-dockerd.sock #高版本默认使用containerd,这里修改成使用dcoker

  imagePullPolicy: IfNotPresent

  imagePullSerial: true

  name: master # 这里需要修改成master主入口节点的主机名

  taints: null

timeouts:

  controlPlaneComponentHealthCheck: 4m0s

  discovery: 5m0s

  etcdAPICall: 2m0s

  kubeletHealthCheck: 4m0s

  kubernetesAPICall: 1m0s

  tlsBootstrap: 5m0s

  upgradeManifests: 5m0s

---

apiServer: {}

apiVersion: kubeadm.k8s.io/v1beta4

caCertificateValidityPeriod: 87600h0m0s

certificateValidityPeriod: 8760h0m0s

certificatesDir: /etc/kubernetes/pki

clusterName: kubernetes

controllerManager: {}

dns: {}

encryptionAlgorithm: RSA-2048

etcd:

  local:

    dataDir: /var/lib/etcd

imageRepository: registry.k8s.io

  kind: ClusterConfiguration

kubernetesVersion: 1.31.0

networking:

  dnsDomain: cluster.local

  serviceSubnet: 10.96.0.0/12

proxy: {}

scheduler: {}

初始化集群

kubeadm init --config kubeadm-config.yaml --upload-certs

输出化集群完成以后最后会输出

kubeadm join 192.168.10.10:6443 --token abcdef.0123456789abcdef \ --discovery-token-ca-cert-hash sha256:45d94841c0c24a2f5734689fb90277ebf51e0753305334639f12f05dc32832384 

这个命令我们先复制后面会用到


node节点加入集群

检查 cgroup 支持的文件系统类型

stat -fc %T /sys/fs/cgroup/

禁止kubelet在检测到swap被启用时失败

echo 'KUBELET_EXTRA_ARGS="--fail-swap-on=false"' > /etc/default/kubelet

重启 kubelet 服务 以应用上述配置更改

systemctl restart kubelet

加入集群

kubeadm join 192.168.10.10:6443 --token abcdef.0123456789abcdef \ --discovery-token-ca-cert-hash sha256:45d94841c0c24a2f5734689fb90277ebf51e0753305334639f12f05dc32832384  --cri-socket=unix:///var/run/cri-dockerd.sock

增加一行内容指定docker为容器运行时 --cri-socket=unix:///var/run/cri-dockerd.sock 添加在命令最后

配置集群网络Calico 部署在master执行

获取yaml文件

wget https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/calico.yaml --no-check-certificate

应用yaml文件

kubectl apply -f calico.yaml

查看

kubectl get -f calico.yaml

配置 Master 节点的 kubectl

创建 .kube 目录

mkdir -p $HOME/.kube

将 Kubernetes 管理员配置文件 (admin.conf) 复制到 .kube/config

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

修改配置文件的所有者和组为当前用户和用户组

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

确保 kubelet 开机自启并立即启动

systemctl enable --now kubelet

检查集群状态

kubectl get nodes

kubectl get pod -A

kubctl命令补全

echo "source <(kubectl completion bash)" >> ~/.bash_profile

source .bash_profile

启用ipvs

下载基础工具

yum -y install ipvsadm

修改文件

kubectl edit configmaps -n kube-system kube-proxy

修改mode字段

mode:“ipvs” 默认为空添加ipvs

到此集群部署完成

http://www.dtcms.com/a/312727.html

相关文章:

  • IO流-字节流-FileInputStream
  • 【设计模式】0.UML类图
  • Python特性工厂函数详解:优雅管理属性验证
  • 【技术干货】Matplotlib深度集成PyQt5实战:动态_静态图表一站式解决方案
  • 嵌入式学习-(李宏毅)机器学习(5)-day32
  • 集合篇-根据字符串出现频率排序
  • 每日面试题20:spring和spring boot的区别
  • 【MCAL】AUTOSAR架构下SPI数据同步收发具体实现
  • 《深入浅出RabbitMQ:从零基础到面试通关》
  • go 中的 fmt 占位符
  • LUA脚本语言
  • 【svg】
  • 人工智能之数学基础:几何型(连续型)随机事件概率
  • 2、docker容器命令 | 信息查看
  • Redis 7中的List类型指南
  • 14.Redis 哨兵 Sentinel
  • 10.Redis 数据类型
  • Back to the Features中,直观物理的评价指标是什么,计算方式是什么
  • 5 进入 CD 的世界
  • Thread 类的基本用法
  • 蛇形卷积介绍
  • Spring Cloud微服务中的内存泄漏问题定位与解决方案
  • 【Unity】背包系统 + 物品管理窗口 (上)
  • 7.13.B+树
  • 【机器学习】线性回归算法详解:线性回归、岭回归、Lasso回归与Elastic Net
  • [AI8051U入门第十四步]W5500实现UDP通信
  • 第六章第三节 TIM 输出比较
  • Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现各类垃圾的分类检测识别(C#代码UI界面版)
  • 学习游戏制作记录(实现克隆攻击的克隆复制和水晶代替克隆)8.3
  • 机器学习——下采样(UnderSampling),解决类别不平衡问题,案例:逻辑回归 信用卡欺诈检测