Centos7版本基于docker安装部署Kubernetes 1.27.x

目录

一、基础环境部署

1.1 基本信息

1.2 主机名ip规划

1.3 基础配置(所有主机操作)

二、容器环境部署

2.1 部署docker软件源

三、cri环境操作

四、Harbor私有镜像仓库部署 

4.1 准备工作

4.2 配置harbor

4.3 定制服务启动文件(拓展)

4.4 Harbor仓库定制

4.5 如何为Harbor仓库提交镜像   

五、k8s集群初始化

5.1 软件源定制以及安装软件

5.2 镜像获取

5.3 master主节点初始化

5.4 工作节点加入集群

5.5 flannel网络部署

六、命令TAB补充 


一、基础环境部署

1.1 基本信息你要知道

     

1.2 主机名ip规划

IP地址主机名规划
10.0.0.10kubernetes-master.sswang.com  kubernetes-master
10.0.0.11kubernetes-node1.sswang.com  kubernetes-node1
10.0.0.12kubernetes-node2.sswang.com  kubernetes-node2
10.0.0.100kubernetes-register.sswang.com  kubernetes-register

  1.3 基础配置(所有主机操作)

跨主机免密码认证(方便master主机拷贝文件给其他主机)
# 生成秘钥对
ssh-keygen -t rsa 

跨主机免密码认证
ssh-copy-id root@远程主机ip地址

基础环境配置
# 各个主机设置自己的主机名
hostnamectl set-hostname xxxx

# 将 SELinux 设置为 disabled 模式(相当于将其禁用)
sed -i 's/enforcing/disabled/' /etc/selinux/config && setenforce 0

# 关闭防火墙
systemctl stop firewalld && systemctl disable firewalld

#主机解析
#/etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.0.10       kubernetes-master.sswang.com  kubernetes-master
10.0.0.11       kubernetes-node1.sswang.com  kubernetes-node1
10.0.0.12       kubernetes-node2.sswang.com  kubernetes-node2
10.0.0.100      kubernetes-register.sswang.com  kubernetes-register

# Swap环境配置
# 临时禁用
swapoff -a

# 永久禁用
sed -i 's/.*swap.*/#&/' /etc/fstab 

# 内核参数调整
cat >> /etc/sysctl.d/k8s.conf << EOF
vm.swappiness=0
EOF
sysctl -p /etc/sysctl.d/k8s.conf
网络参数调整(所有主机操作)
# 配置iptables参数,使得流经网桥的流量也经过iptables/netfilter防火墙
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
modprobe overlay
sysctl -p /etc/sysctl.d/k8s.conf

二、容器环境部署

注意:所有主机操作

2.1 部署docker软件源

#配置阿里镜像源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

# 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

# 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 安装最新版docker 
yum list docker-ce --showduplicates | sort -r 
yum install -y docker-ce 
systemctl enable docker && systemctl start docker

#配置镜像加速,cgroup drivcer调整、私有镜像仓库
#国内无法拉取docker镜像但某些云镜像加速还可以用,华为镜像加速不会的可以参考https://cloud.tencent.com/developer/article/2434428

cat >> /etc/docker/daemon.json <<-EOF
{
  "registry-mirrors": ["https://你的地址.mirror.swr.myhuaweicloud.com"], 
  "insecure-registries": ["kubernetes-register.sswang.com"], 
  "exec-opts": ["native.cgroupdriver=systemd"]
}
EOF

#重启docker服务
systemctl restart docker

#检查
docker info
docker pull nginx

三、cri环境操作

注意:所有主机操作

1.23 之前kubelet可以直接操控底层容器环境

1.24 之后则需要通过cri服务

#下载软件
mkdir /data/softs -p && cd /data/softs
wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.2/cri-dockerd-0.3.2.amd64.tgz

#解压软件
tar xf cri-dockerd-0.3.2.amd64.tgz
mv cri-dockerd/cri-dockerd /usr/local/bin/

#检查效果
cri-dockerd --version

#定制配置文件
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 cri-dockerd.service
systemctl restart cri-dockerd.service

四、Harbor私有镜像仓库部署 

注意:kubernetes-register主机操作

4.1 准备工作

  如果下载的比较慢可以网盘下载(注意版本是2.9.1的与下面的代码版本不一致记得更改)
链接:https://pan.baidu.com/s/1oTqDTmO4b4F1ht2KxFwknA?pwd=dr63 
提取码:dr63 

# 安装docker-compose
yum install -y docker-compose

# 下载软件
mkdir /data/{softs,server} -p && cd /data/softs
wget https://github.com/goharbor/harbor/releases/download/v2.5.0/harbor-offline-installer-v2.5.0.tgz

# 解压软件
tar -zxvf harbor-offline-installer-v2.5.0.tgz -C  /data/server/
cd /data/server/harbor/

# 加载镜像
docker load < harbor.v2.5.0.tar.gz
docker images

# 备份配置
cp harbor.yml.tmpl harbor.yml

4.2 配置harbor

# 修改配置
[root@kubernetes-register /data/server/harbor]# vim harbor.yml
    hostname: kubernetes-register.sswang.com    #私有仓库主机名
    http:
      port: 80
    #https:  注释ssl相关的部分
      #  port: 443
      #  certificate: /your/certificate/path
      #  private_key: /your/private/key/path
    # 修改harbor的登录密码
    harbor_admin_password: 123456
    # 设定harbor的数据存储目录
    data_volume: /data/server/harbor/data

# 配置harbor
[root@kubernetes-register /data/server/harbor]# ./prepare

# 启动harbor
[root@kubernetes-register /data/server/harbor]# ./install.sh

# 检查效果
[root@kubernetes-register /data/server/harbor]# docker-compose ps

4.3 定制服务启动文件(拓展)

# 先关掉docker-compose
docker-compose down
# 定制服务启动文件 /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/bin/docker-compose --file /data/server/harbor/docker-compose.yml up
ExecStop=/usr/bin/docker-compose --file /data/server/harbor/docker-compose.yml down

[Install]
WantedBy=multi-user.target

=========================================================================================
# 加载服务配置文件
systemctl daemon-reload
# 启动服务
systemctl start harbor
# 检查状态
systemctl status harbor
# 设置开机自启动
systemctl enable harbor

 4.4 Harbor仓库定制

浏览器访问域名,用户名: admin, 密码:123456
创建sswang用户专用的项目仓库,名称为 sswang,权限为公开的

创建完用户后右上角退出用刚创建的用户重新登录

新建项目设置为公开

4.5 如何为Harbor仓库提交镜像
    1. 镜像打标签
            -- 必须携带harbor主机地址
    2. 登录harbor
            docker login
    3. 提交镜像
            docker pull

# 下载镜像
docker pull tomcat

# 定制镜像标签
#docker tag --help
#Usage:  docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
docker tag tomcat kubernetes-register.sswang.com/sswang/tomcat:9.0.43

# 登录仓库
docker login kubernetes-register.sswang.com -u sswang
Password:   # 输入登录密码 A12345678a

# 推送镜像
docker push kubernetes-register.sswang.com/sswang/tomcat:9.0.43

# 其他主机从私有仓库拉取
docker pull kubernetes-register.sswang.com/sswang/tomcat:9.0.43

五、k8s集群初始化

5.1 软件源定制以及安装软件

新版配置方法

新版 kubernetes 源使用方法和之前有一定区别,请求按照如下配置方法配置使用。

其中新版 kubernetes 源按照安装版本区分不同仓库,该文档示例为配置 1.27 版本,如需其他版本请在对应位置字符串替换即可。

(比如需要安装 1.29 版本,则需要将如下配置中的 v1.28 替换成 v1.29)

(目前该源支持 v1.24 - v1.29 版本,后续版本会持续更新)

Kubeadm:集群管理使用

Kubectl:管理集群资源对象环境,master节点专用

Kubelet:采集节点数据汇报给master

# 定制阿里云的关于kubernetes的软件源
cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.27/rpm/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.27/rpm/repodata/repomd.xml.key
EOF

setenforce 0
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet && systemctl start kubelet

5.2 镜像获取

创建个google_containers仓库

检查镜像文件列表
kubeadm config images list

获取镜像文件
images=$(kubeadm config images list --kubernetes-version=1.27.16 | 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.sswang.com/google_containers/$i
  docker push kubernetes-register.sswang.com/google_containers/$i
  docker rmi registry.aliyuncs.com/google_containers/$i
done

5.3 master主节点初始化

环境初始化命令
kubeadm init --kubernetes-version=1.27.16 \
--apiserver-advertise-address=10.0.0.10 \
--image-repository kubernetes-register.sswang.com/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

#--kubernetes-version 版本
#--apiserver-advertise-address master入口
#--image-repository 镜像仓库
#--ignore-preflight-errors 忽略错误
#--cri-socket 容器引擎

定制kubernetes的登录权限
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

5.4 工作节点加入集群

kubeadm join 10.0.0.10:6443 --token avbij5.qos2mqllby3pjewu         --discovery-token-ca-cert-hash sha256:65d7d372058c45b15a386b329055c80c399ad63bd5b2bd43c85b8e3c9e568f7a --cri-socket=unix:///var/run/cri-dockerd.sock

5.5 flannel网络部署

# 网络定制
mkdir /data/kubernetes/flannel -p
cd /data/kubernetes/flannel

# 获取配置文件
wget https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml

# 定制镜像标签
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.sswang.com/google_containers/$i
    docker push kubernetes-register.sswang.com/google_containers/$i
    docker rmi flannel/$i
done

# 备份配置文件
cp kube-flannel.yml{,.bak}

如果拉取不了换一个国内的重新打个标签


docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/flannel/flannel:v0.25.5
docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/flannel/flannel-cni-plugin:v1.5.1-flannel1
docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/flannel/flannel:v0.25.5  kubernetes-register.sswang.com/google_containers/flannel:v0.25.5
docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/flannel/flannel-cni-plugin:v1.5.1-flannel1 kubernetes-register.sswang.com/google_containers/flannel-cni-plugin:v1.5.1-flannel1

修改配置文件

修改配置文件
sed -i '/ image:/s/docker.io\/flannel/kubernetes-register.sswang.com\/google_containers/' kube-flannel.yml

[root@kubernetes-master flannel]# grep image: kube-flannel.yml       
        image: kubernetes-register.sswang.com/google_containers/flannel-cni-plugin:v1.5.1-flannel1
        image: kubernetes-register.sswang.com/google_containers/flannel:v0.25.5
        image: kubernetes-register.sswang.com/google_containers/flannel:v0.25.5

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

检查效果
[root@kubernetes-master ~]# kubectl get nodes
NAME                STATUS   ROLES           AGE   VERSION
kubernetes-master   Ready    control-plane   19h   v1.27.16
kubernetes-node1    Ready    <none>          19h   v1.27.16
kubernetes-node2    Ready    <none>          19h   v1.27.16

六、命令TAB补充 

放到master主机的环境文件中
echo "source <(kubectl completion bash)" >> ~/.bashrc
echo "source <(kubeadm completion bash)" >> ~/.bashrc
source ~/.bashrc

如果遇到以下错误:

[root@kubernetes-master ~]# kubectl c-bash: _get_comp_words_by_ref: command not found

解决方法:

# 安装bash-completion
[root@kubernetes-master ~]# yum install bash-completion -y

# 执行bash_completion
[root@kubernetes-master ~]# source /usr/share/bash-completion/bash_completion

# 重新加载
source ~/.bashrc

  • 16
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
根据引用\[1\]和引用\[2\]的内容,您可以按照以下步骤在CentOS 7上安装Kubernetes 1.27版本: 1. 确保您的硬件配置满足要求:CPU >= 2核,硬盘 >= 20G,内存 >= 2G。节点数量建议为奇数(3, 5, 7, 9等)。 2. 执行以下命令安装Kubernetes 1.27.1版本: ``` sudo yum install -y kubelet-1.27.1-0 kubeadm-1.27.1-0 kubectl-1.27.1-0 --disableexcludes=kubernetes --nogpgcheck ``` 如果您想安装最新版本,可以使用以下命令: ``` sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes --nogpgcheck ``` 3. 重新加载systemd配置并重启kubelet服务: ``` systemctl daemon-reload sudo systemctl restart kubelet sudo systemctl enable kubelet ``` 这样,您就成功安装Kubernetes 1.27版本。请注意,这只是安装Kubernetes的基本步骤,您可能还需要进行其他配置和操作来完成整个集群的设置。如果您需要更详细的安装步骤,请参考引用\[3\]中提供的CentOS 7上基于containerd安装Kubernetes 1.27集群的详细步骤。 #### 引用[.reference_title] - *1* *2* [Centos7安装部署k8s(kubernetes)最新v1.27.1版本超详细安装教程](https://blog.csdn.net/weixin_44084452/article/details/130797232)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Centos 7 上基于 containerd 安装 Kubernetes 1.27 集群](https://blog.csdn.net/engchina/article/details/130189717)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

偷心的zui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值