首页 > 系统相关 >Centos 7 部署Kubernetes集群

Centos 7 部署Kubernetes集群

时间:2022-11-21 16:23:57浏览次数:68  
标签:kube Kubernetes Centos -- system 集群 master docker cri

前言

基础描述

从 k8s 1.24开始,dockershim已经从kubelet中移除,但因为历史问题docker却不支持kubernetes主推的CRI(容器运行时接口)标准,所以docker不能再作为k8s的容器运行时了,即从k8s v1.24开始不再使用docker了
但是如果想继续使用docker的话,可以在kubelet和docker之间加上一个中间层cri-docker。cri-docker是一个支持CRI标准的shim(垫片)。一头通过CRI跟kubelet交互,另一头跟docker api交互,从而间接的实现了kubernetes以docker作为容器运行时。但是这种架构缺点也很明显,调用链更长,效率更低。
本文采用了cri-docker的使用,但是更推荐使用containerd作为k8s的容器运行时

温馨提示:

  • 请注意各节点所需执行命令

一、准备环境

k8s集群版本:kubernetes  v1.25.0

服务器系统 节点IP 节点类型 CUP/内存 Hostname
Centos 7.4.1708 192.168.1.89 主节点 2核/4G master
Centos 7.4.1708 192.168.1.90 工作节点1 2核/4G node1
Centos 7.4.1708 192.168.1.91 工作节点2 2核/4G node2

 二、安装检查

注:在三台机器上执行------------------------开始----------------------------

2.1 修改hostname
hostnamectl set-hostname master
hostnamectl set-hostname node1
hostnamectl set-hostname node2

2.2 三台机器网络连通(修改所有节点)

[root@master ~]# cat /etc/hosts
192.168.1.89    master
192.168.1.90    node1
192.168.1.91    node2

2.3 关闭防火墙

systemctl stop firewalld && systemctl disable firewalld

2.4 关闭selinux

setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

2.5 关闭swap

swapoff -a
sed -i '/swap/s/^\(.*\)$/#\1/g' /etc/fstab

2.6 配置iptables的ACCEPT规则

iptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat && iptables -P FORWARD ACCEPT

2.7 设置系统参数

cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

sysctl --system

三、yum 更新

3.1 更新系统及安装依赖

yum install update
yum install -y lrzsz conntrack ipvsadm ipset jq sysstat curl iptables libseccomp

四、安装docker

4.1 设置repo

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

4.2 设置国内镜像并重启 daemon

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://tsvqojsz.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload

4.3 下载repo源

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

4.4 安装并启动

yum install -y docker-ce
systemctl start docker
systemctl enable docker

4.5 验证安装结果

docker info

五、安装 cri-dockerd

官方信息

链接:https://pan.baidu.com/s/1J77dItAnPoO_v2Yi8ibn6A?pwd=tkky
提取码:tkky

5.1 上传安装包并解压
tar xf cri-dockerd-0.2.6.amd64.tgz
cp cri-dockerd/cri-dockerd /usr/bin/
chmod +x /usr/bin/cri-dockerd

5.2 配置启动⽂件,执行如下命令

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.7
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

5.3 ⽣成 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

5.4 启动 cri-docker 并设置开机⾃动启动

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

六 、安装k8s

部署 kubeadm kubelet kubectl

6.1 添加阿⾥云 yum源

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

6.2 安装三大件

yum install -y kubelet-1.25.0 kubeadm-1.25.0 kubectl-1.25.0
kubeadm version
systemctl enable kubelet

6.3  修改初始化系统管理器

说明:

ubuntu 系统,debian 系统,centos7 系统,都是使用 systemd 初始化系统。systemd 这边已经有一套 cgroup 管理器了,如果容器运行时和 kubelet 使用 cgroupfs,此时就会存在 cgroups 和 systemd 两种 cgroup 管理器。也就意味着操作系统里面存在两种资源分配的视图,当操作系统上存在 CPU,内存等等资源不足的时候,操作系统上的进程会变得不稳定。

cat <<EOF > /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
EOF

注:在三台机器上执行------------------------结束----------------------------

6.4 初始化master节点

  • 此命令只在master节点执行,192.168.1.89 替换为你的master节点IP
  • 【若要重新初始化集群状态:kubeadm reset,然后再进行以下初始化操作】
kubeadm init \
--apiserver-advertise-address=192.168.1.89 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.25.0 \
--service-cidr=10.10.0.0/12 \
--pod-network-cidr=10.244.0.0/16 \
--cri-socket /var/run/cri-dockerd.sock \
--ignore-preflight-errors=all

迁移配置

mkdir -p $HOME/.kube
 
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
 
sudo chown $(id -u):$(id -g) $HOME/.kube/config

6.5 将work节点加入集群

kubeadm join 192.168.1.89:6443 --token dy9bff.3lksz1ppp208zapx \
        --discovery-token-ca-cert-hash sha256:534b3bd0ad6e0faa20da83979987aaa852550fbc4a1db7d331d50bb29d04ac84 \
	--cri-socket /var/run/cri-dockerd.sock

七、安装网络插件flannel

7.1 安装flannel

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

7.2 查看pod状态

  • 查看所有pod信息:kubectl get pods -A -o wide
[root@master ~]# kubectl get pod --all-namespaces
NAMESPACE      NAME                             READY   STATUS    RESTARTS        AGE
kube-flannel   kube-flannel-ds-kt72s            1/1     Running   0               3h43m
kube-flannel   kube-flannel-ds-ppl2v            1/1     Running   0               3h43m
kube-flannel   kube-flannel-ds-tqj52            1/1     Running   0               3h43m
kube-system    coredns-c676cc86f-hg4bx          1/1     Running   0               2d23h
kube-system    coredns-c676cc86f-pp6gs          1/1     Running   0               2d23h
kube-system    etcd-master                      1/1     Running   3 (6h13m ago)   2d23h
kube-system    kube-apiserver-master            1/1     Running   3 (6h13m ago)   2d23h
kube-system    kube-controller-manager-master   1/1     Running   2 (6h13m ago)   2d23h
kube-system    kube-flannel-ds-g4j29            1/1     Running   0               3h49m
kube-system    kube-flannel-ds-sngvm            1/1     Running   0               3h49m
kube-system    kube-flannel-ds-w8g45            1/1     Running   0               3h49m
kube-system    kube-proxy-6pbqd                 1/1     Running   1 (6h12m ago)   2d23h
kube-system    kube-proxy-jzc4n                 1/1     Running   3 (6h13m ago)   2d23h
kube-system    kube-proxy-mvtwg                 1/1     Running   1 (6h12m ago)   2d23h
kube-system    kube-scheduler-master            1/1     Running   2 (6h13m ago)   2d23h

7.3 查看集群状态

[root@master ~]# kubectl get node
NAME     STATUS   ROLES           AGE     VERSION
master   Ready    control-plane   2d23h   v1.25.0
node1    Ready    <none>          2d23h   v1.25.0
node2    Ready    <none>          2d23h   v1.25.0

 

 

标签:kube,Kubernetes,Centos,--,system,集群,master,docker,cri
From: https://www.cnblogs.com/yangzp/p/16911078.html

相关文章

  • Haproxy搭建web集群
    一.常见的web集群调度器1、目前常见的web集群调度器分为软件和硬件2、软件通常使用开源的LVS、Haproxy、Nginx​LVS性能最好,但搭建复杂。Nginx并发量,性能低于Haproxy......
  • centos6的可用源
    由于需要一个低内核版本的linux环境,因此用到了centos6,但是由于yum源有一些已经不生效了,导致yuminstall指令失败,因此找了一个可用源yum源的链接放到文末操作如下1、将文......
  • Kubernetes(K8S) 配置静态资源服务
    Kubernetes(K8S)配置静态资源服务---apiVersion:v1kind:ConfigMapmetadata:name:img-confignamespace:vipsoftdata:img.conf:|server{ch......
  • Ububtu之Mariadb_Galera集群
    1.环境准备主机名IPmysql110.0.0.10mysql210.0.0.11mysql310.0.0.12mysql410.0.0.13系统ubuntu22.041.1更改主机名mysql1hostnamec......
  • centos7安装glibc_2.28
    centos7默认的gcc版本是4.8.5,无法编译高版本的glibc2.28,需要升级到gcc8.2版本注:gcc高版本和glibc2.28不兼容##查看自带默认的glibcstrings/lib64/lib.so.6|grep......
  • 虚拟机centos7上安装docker+jenkins
    虚拟机centos7上安装docker+jenkins学习某册子的CICD时,安装了docker和jenkins,记录的安装过程和中间碰到的问题。使用的虚拟机为ParallelsDesktop,配置为2核4G,系统为cento......
  • centos76网络/端口/防火墙常用命令
    查看防火墙所有开放的端口firewall-cmd--zone=public--list-ports开放/关闭端口firewall-cmd--zone=public--add-port=8888/tcp--permanentfirewall-cmd--r......
  • hadoop集群跑任务出错总结
    1. Causedby:org.apache.hadoop.yarn.exceptions.YarnException:Downloadandunpackfailed解决:一般是/etc/hosts没有配置,需要把集群ip对应的域名添加到hosts即可,如......
  • centos 安装docker
    参考:CentOS7.9安装Dockercentos7.9安装docker(超详细,并带截图)docker的安装与删除(centos8)CentOS8.0安装Docker......
  • Mariadb_Galera集群
    1.环境准备主机名IPmysql110.0.0.10mysql210.0.0.11mysql310.0.0.12mysql410.0.0.131.1关闭防火墙与selinux所有节点sed-i"s/SELINUX=......