基于Centos7的k8s部署

以下是基于 CentOS 7 的 Kubernetes 部署实验的目的和作用:

实验目的

1. 掌握 Kubernetes 集群的部署流程:
    - 理解 Kubernetes 集群的基本架构和组件。
    - 学会使用 kubeadm 等工具进行 Kubernetes 集群的初始化、节点加入等操作。
    - 熟悉在 CentOS 7 系统环境下配置和管理 Kubernetes 集群的步骤。

2. **学习容器编排技术**:
    - 通过部署 Kubernetes 集群,深入理解容器编排的核心概念,如 Pod、Deployment、Service 等。
    - 了解如何利用 Kubernetes 进行容器应用的生命周期管理、自动扩缩容和自动修复等操作。

3. **验证网络插件的配置和使用**:
    - 在实验过程中,学习如何选择和配置合适的网络插件(如 Flannel、Calico 等),以实现集群内部容器之间的网络通信。
    - 掌握解决网络配置常见问题的方法,如 CNI 配置初始化等。

4. **熟悉多节点集群的管理**:
    - 学习在多节点(包括主节点和工作节点)环境下对 Kubernetes 集群进行管理。
    - 实践如何在集群中部署应用、分配资源以及进行负载均衡等操作。

5. **提升在 CentOS 7 系统下的运维能力**:
    - 增强对 CentOS 7 系统的配置和管理能力,包括软件安装、服务配置、防火墙设置等。
    - 学会处理系统环境对 Kubernetes 部署的影响,如内核版本要求、SELinux 设置等。

### 实验作用

1. **构建实践基础**:
    - 为后续深入学习和实践 Kubernetes 提供一个实际的运行环境,使理论知识与实践操作紧密结合。
    - 帮助学习者更好地理解和掌握 Kubernetes 的实际应用场景和操作技巧。

2. **支持应用开发与测试**:
    - 为开发人员提供一个可测试和调试容器化应用的平台,便于在接近生产环境的条件下进行应用开发。
    - 可以快速部署和测试不同类型的应用,验证应用在 Kubernetes 集群中的运行效果。

3. **促进技能提升**:
    - 通过实际操作,提高在容器编排、集群管理、网络配置等方面的技能水平。
    - 增强对云原生技术栈的理解和应用能力,为在实际工作中应对相关技术挑战做好准备。

4. **便于技术研究和探索**:
    - 为研究人员提供一个实验环境,方便对 Kubernetes 的新特性和新技术进行研究和探索。
    - 可以尝试不同的配置和策略,观察其对集群性能和应用运行的影响,从而为优化集群配置提供依据。

5. **助力企业级应用的准备**:
    - 为企业 IT 人员提供一个模拟企业级 Kubernetes 部署的环境,有助于提前熟悉相关技术和流程。
    - 便于在正式部署企业应用之前,在实验环境中进行技术验证和方案优化,降低企业应用上云的风险。

实验拓扑图:

master节点ip:192.168.1.61

node1节点IP:192.168.1.62

node2节点IP:192.168.1.63

实验步骤:

一、基础配置(所有节点都要进行配置,下面以master节点为例)

1.修改主机名

hostnamectl set-hostname  xxx

hostnamectl set-hostname  xxx
bash

 2.修改/etc/hosts 文件

vim /etc/hosts
#添加以下数据,所有节点一致,IP修改为你自己的相应的节点IP
192.168.1.61 master
192.168.1.62 node1
192.168.1.63 node2

3、关闭防火墙,安装iptables

#关闭防火墙 
systemctl stop firewalld

#禁用防火墙
systemctl disable firewalld
#安装iptables
 yum -y install iptables-services

各节点启动

systemctl start iptables
#清空规则
iptables -F
#开机启动
systemctl enable iptables

 4.禁用selinux

 setenforce 0
 sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
#重启生效
reboot

5.设置时区 

timedatectl set-timezone Asia/Shanghai

6.关闭 swap 分区

swapoff -a
sed -i 's:/dev/mapper/rl-swap:#/dev/mapper/rl-swap:g' /etc/fstab

7. 安装 ipvs

 yum install -y ipvsadm ipset

 8.加载 bridge 

yum install -y epel-release

yum install -y bridge-utils

 modprobe br_netfilter
 echo 'br_netfilter' >> /etc/modules-load.d/bridge.conf
 echo 'net.bridge.bridge-nf-call-iptables=1' >> /etc/sysctl.conf
 echo 'net.bridge.bridge-nf-call-ip6tables=1' >> /etc/sysctl.conf
 echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
 sysctl -p

  9.添加 docker-ce yum 源

yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo

 10.安装docker

 yum -y install docker-ce

11. 配置 daemon.json  重要的是配置源

 配置docker守护进程,创建docker服务目录

cat > /etc/docker/daemon.json << EOF
{
  "data-root": "/data/docker",
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "100"
  },
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://docker.hcp.cloud",
    "https://docker.unsee.tech",
    "https://docker.ipanel.live",
    "http://mirrors.ustc.edu.cn",
    "https://docker.chenby.cn",
    "http://mirror.azure.cn",
    "https://dockerpull.org",
    "https://dockerhub.icu",
    "https://hub.rat.dev"
  ]
}
EOF

mkdir -p /etc/systemd/system/docker.service.d

 12. 重启docker服务

systemctl daemon-reload && systemctl restart docker && systemctl enable docker

13.上传CRI-Docker插件

14.解压CRI-Dockerd插件,将解压后的cri-dockerd可执行文件复制到/usr/bin/目录,并设置执行权限

[root@k8s-master ~]# tar -xf cri-dockerd-0.3.9.amd64.tgz
[root@k8s-master ~]# cp cri-dockerd/cri-dockerd /usr/bin/
[root@k8s-master ~]# chmod +x /usr/bin/cri-dockerd
[root@k8s-master ~]#

 15.配置CRI-Docker服务文件

cat <<"EOF" > /usr/lib/systemd/system/cri-docker.service
[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
Requires=cri-docker.socket

[Service]
Type=notify
ExecStart=/usr/bin/cri-dockerd --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.8
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

 16.添加 cri-docker 套接字,创建CRI-Docker socket文件

cat <<"EOF" > /usr/lib/systemd/system/cri-docker.socket
[Unit]
Description=CRI Docker Socket for the API
PartOf=cri-docker.service

[Socket]
ListenStream=%t/cri-dockerd.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker

[Install]
WantedBy=sockets.target
EOF

 17.重新加载systemd守护进程,启用CRI-Docker服务,启动该服务,并检查服务是否处于活动状态。

systemctl daemon-reload
systemctl enable cri-docker
systemctl start cri-docker
systemctl is-active cri-docker

 18.添加 kubeadm yum 源

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

 19.安装kubernetes 1.28.2 

yum install -y kubelet-1.28.2 kubectl-1.28.2 kubeadm-1.28.2 # 这个只是告知怎么在安装的过程中选择版本
yum -y install kubelet kubeadm kubeadm
systemctl enable kubelet.service

 二、在master节点的操作

  1. 生成默认的初始化配置文件init-config.yaml

    kubeadm config print init-defaults > init-config.yaml
    vi init-config.yaml
     
    
    #文件内容如下
    apiVersion: kiubeadm.k8s.io/v1beta3
    bootstrapTokens:
    - groups:
      - system:bootstrappers:kubeadm:default-node-token
      token: abcdef.0123456789abcdef
      ttl: 24h0m0s
      usages:
      - signing
      - authentication
    kind: InitConfiguration
    localAPIEndpoint:
      advertiseAddress: 192.168.1.61 #master节点IP
      bindPort: 6443
    nodeRegistration:
      criSocket: unix:///var/run/cri-dockerd.sock
      imagePullPolicy: IfNotPresent
      name: master
      taints: null
    ---
    apiServer:
      timeoutForControlPlane: 4m0s
    apiVersion: kubeadm.k8s.io/v1beta3
    certificatesDir: /etc/kubernetes/pki
    clusterName: kubernetes
    controllerManager: {}
    dns: {}
    etcd:
      local:
        dataDir: /var/lib/etcd
    imageRepository: registry.aliyuncs.com/google_containers
    kind: ClusterConfiguration
    kubernetesVersion: 1.28.2
    networking:
      dnsDomain: cluster.local
      serviceSubnet: 10.96.0.0/12
      podSubnet: 10.244.0.0/16
    scheduler: {}
    
    

     以上文件有错误:修改使用下面命令:

sed -i 's/kiubeadm/kubeadm/g' init-config.yaml

2.列出初始化集群所需的镜像并拉取

kubeadm config images list --config=init-config.yaml

kubeadm config images pull --config=init-config.yaml

 (5)创建.kube目录,复制管理员配置文件,修改文件权限

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

6)将各节点加入到集群(注意要修改成自己的节点信息,初始化集群时可以看到)

node1:

kubeadm join 192.168.1.62:6443 \
--token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:15612baa3473388167c8ff2ca2ff06474909c9f1329d84e68f2966299347a62c \
--cri-socket unix:///var/run/cri-dockerd.sock

node2:

kubeadm join 192.168.1.63:6443 \
--token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:15612baa3473388167c8ff2ca2ff06474909c9f1329d84e68f2966299347a62c \
--cri-socket unix:///var/run/cri-dockerd.sock

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值