Kubernetes(K8s 1.28.x)部署---创建方式Docker(超详细)

梦境玩家 2024-07-08 08:37:01 阅读 51

目录

一、基础环境配置(所有主机均要配置)

1、配置IP地址和主机名、hosts解析

2、关闭防火墙、禁用SELinux

3、安装常用软件

4、配置时间同步

5、禁用Swap分区

6、修改linux的内核参数

7、配置ipvs功能

二、容器环境操作

1、定制软件源

2、安装最新版docker

3、配置docker加速器

4、启动docker

三、cri环境操作

1、cri-dockerd-0.3.4.amd64.tgz 下载

2、解压到指定目录并查看

 3、定制配置文件

4、启动服务

四、harbor仓库操作

1、docker-compose-linux-x86_64下载

2、给权限并解压到创建的目录中

3、加载镜像

4、修改配置文件

5、定制服务启动文件

6、测试

 五、k8s集群初始化

1、定制软件源--所有节点

2、环境部署--所有节点

3、检查镜像文件列表--只在一个节点操作

4、在harbor仓库中创建项目

 5、在master节点上获取镜像文件

6、master节点初始化

7、node节点加入

六、k8s环境收尾操作--master节点操作

1、权限操作

2、命令补全

3、下载kube-flannel.yml

4、编辑脚本并执行

 5、修改配置文件

6、应用配置文件

 7、检查效果

 8、查看集群状态

七、扩展:kubectl可以在node节点上运行吗?

一、基础环境配置(所有主机均要配置)

主机名规划:

序号 主机ip 主机名规划 用途
1 192.168.226.150 kubernetes-master.openlab.cn kubernetes-master
2 192.168.226.151 kubernetes-node1.openlab.cn kubernetes-node1
3 192.168.226.152 kubernetes-node2.openlab.cn kubernetes-node2
4 192.168.226.153 kubernetes-node3.openlab.cn kubernetes-node3
5 192.168.226.155 kubernetes-register.openlab.cn kubernetes-register

环境准备:Centos7.9    2颗CPU  4G内存   50G硬盘

1、配置IP地址和主机名、hosts解析

<code>主机名修改:

hostnamectl set-hostname kubernetes-master.openlab.cn

hosts解析

[root@localhost ~]# vi /etc/hosts

192.168.226.150 kubernetes-master.openlab.cn kubernetes-master

192.168.226.151 kubernetes-node1.openlab.cn kubernetes-node1

192.168.226.152 kubernetes-node2.openlab.cn kubernetes-node2

192.168.226.153 kubernetes-node3.openlab.cn kubernetes-node3

192.168.226.155 kubernetes-register.openlab.cn kubernetes-register

2、关闭防火墙、禁用SELinux

[root@kubernetes-master ~]# systemctl stop firewalld

[root@kubernetes-master ~]# systemctl disable firewalld

[root@kubernetes-master ~]# sed -i '/^SELINUX=/ c SELINUX=disabled' /etc/selinux/config

[root@kubernetes-master ~]# setenforce 0

3、安装常用软件

[root@kubernetes-master ~]# yum install -y wget tree bash-completion lrzsz psmisc net-tools vim

4、配置时间同步

[root@kubernetes-master ~]# yum install chrony -y

[root@kubernetes-master ~]# vim /etc/chrony.conf

...

注释第三行到第六行

:3,6 s/^/#

使用阿里云的时间服务器

server ntp1.aliyun.com iburst

启动服务

[root@kubernetes-master ~]# systemctl enable --now chronyd

测试

[root@kubernetes-master ~]# chronyc sources

210 Number of sources = 1

MS Name/IP address Stratum Poll Reach LastRx Last sample

=====================================================================

^* 120.25.115.20 2 6 17 4 +145us[ +123us]

5、禁用Swap分区

临时禁用

[root@localhost ~]# swapoff -a

永久禁用

[root@localhost ~]# sed -i 's/.*swap.*/#&/' /etc/fstab

检测:

[root@kubernetes-node1 ~]# free -m

total used free shared buff/cache available

Mem: 1819 385 229 9 1204 1259

Swap: 0 0 0

6、修改linux的内核参数

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

#内核参数调整

vm.swappiness=0

#配置iptables参数,使得流经网桥的流量也经过iptables/netfilter防火墙

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

#重新加载

[root@kubernetes-master ~]# sysctl -p /etc/sysctl.d/k8s.conf

vm.swappiness = 0

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

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

net.ipv4.ip_forward = 1

7、配置ipvs功能

# 1 安装ipset和ipvsadm

[root@kubernetes-master ~]# yum install ipset ipvsadm -y

# 2 添加需要加载的模块写入脚本文件

[root@kubernetes-master ~]# cat <<EOF > /etc/sysconfig/modules/ipvs.modules

#!/bin/bash

modprobe -- ip_vs

modprobe -- ip_vs_rr

modprobe -- ip_vs_wrr

modprobe -- ip_vs_sh

modprobe -- nf_conntrack

EOF

# 3 为脚本文件添加执行权限

[root@kubernetes-master ~]# chmod +x /etc/sysconfig/modules/ipvs.modules

# 4 执行脚本文件

[root@kubernetes-master ~]# /bin/bash /etc/sysconfig/modules/ipvs.modules

# 5 查看对应的模块是否加载成功

[root@kubernetes-master ~]# lsmod | grep -e ip_vs -e nf_conntrack_ipv4

ip_vs_sh 12688 0

ip_vs_wrr 12697 0

ip_vs_rr 12600 0

ip_vs 145458 6 ip_vs_rr,ip_vs_sh,ip_vs_wrr

nf_conntrack 139264 1 ip_vs

libcrc32c 12644 3 xfs,ip_vs,nf_conntrack

二、容器环境操作

1、定制软件源

[root@kubernetes-master ~]# yum install -y yum-utils device-mapper-persistent-data lvm2

[root@kubernetes-master ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

2、安装最新版docker

yum install -y docker-ce

3、配置docker加速器

[root@kubernetes-master ~]# cat >> /etc/docker/daemon.json <<-EOF

{

"registry-mirrors": [

"http://74f21445.m.daocloud.io",

"https://registry.docker-cn.com",

"http://hub-mirror.c.163.com",

"https://docker.mirrors.ustc.edu.cn"

],

"insecure-registries": ["kubernetes-register.openlab.cn"],

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

}

EOF

4、启动docker

[root@kubernetes-master ~]# systemctl daemon-reload

[root@kubernetes-master ~]# systemctl enable --now docker

三、cri环境操作

1、cri-dockerd-0.3.4.amd64.tgz 下载

地址:Releases · Mirantis/cri-dockerd (github.com)

2、解压到指定目录并查看

[root@kubernetes-master ~]# tar xf cri-dockerd-0.3.4.amd64.tgz -C /usr/local/

[root@kubernetes-master ~]# mv /usr/local/cri-dockerd/cri-dockerd /usr/local/bin/

[root@kubernetes-master ~]# cri-dockerd --version

cri-dockerd 0.3.4 (e88b1605)

 3、定制配置文件

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

4、启动服务

启动服务

设置服务开机自启动

[root@kubernetes-master ~]# systemctl daemon-reload

[root@kubernetes-master ~]# systemctl enable --now cri-dockerd.service

四、harbor仓库操作

只在仓库机器上执行

1、docker-compose-linux-x86_64下载

下载地址:Releases · docker/compose · GitHub

2、给权限并解压到创建的目录中

给权限

install -m 755 docker-compose-linux-x86_64 /usr/local/bin/docker-compose

创建目录

mkdir -p /data/server

解压

tar xf harbor-offline-installer-v2.8.4.tgz -C /data/server/

进入目录

cd /data/server/harbor/

3、加载镜像

docker load -i harbor.v2.8.4.tar.gz

4、修改配置文件

复制文件

cp harbor.yml.tmpl harbor.yml

修改文件

vim harbor.yml

修改如下:

hostname: kubernetes-register.openlab.cn

#https:

# port: 443

# certificate: /your/certificate/path

# private_key: /your/private/key/path

harbor_admin_password: 123456

data_volume: /data/server/harbor/data

运行

./prepare

./install.sh

5、定制服务启动文件

/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/local/bin/docker-compose --file /data/server/harbor/docker-compose.yml up

ExecStop=/usr/local/bin/docker-compose --file /data/server/harbor/docker-compose.yml down

[Install]

WantedBy=multi-user.target

重启

# systemctl daemon-reload

# systemctl enable harbor.service

# systemctl restart harbor

6、测试

只在k8s集群某一个节点

在master

下载镜像

# docker pull busybox

登录仓库

# docker login kubernetes-register.openlab.cn -u admin -p 123456

定制镜像标签

# docker tag busybox:latest kubernetes-register.openlab.cn/library/busybox:latest

推送镜像

# docker push kubernetes-register.openlab.cn/library/busybox:latest

 五、k8s集群初始化

1、定制软件源--所有节点

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

2、环境部署--所有节点

# yum install kubeadm kubectl kubelet -y

3、检查镜像文件列表--只在一个节点操作

kubeadm config images list

4、在harbor仓库中创建项目

网页:http://192.168.226.155

账号:admin 密码:123456

 5、在master节点上获取镜像文件

<code># cat images.sh

#!/bin/bash

images=$(kubeadm config images list --kubernetes-version=1.28.0 | 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.openlab.cn/google_containers/$i

docker push kubernetes-register.openlab.cn/google_containers/$i

docker rmi registry.aliyuncs.com/google_containers/$i

done

执行脚本文件

sh images.sh

6、master节点初始化

kubeadm init --kubernetes-version=1.28.0 \

####注意修改下面一行的地址为自己的master地址

--apiserver-advertise-address=192.168.226.150 \

--image-repository kubernetes-register.openlab.cn/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

7、node节点加入

kubeadm join 192.168.226.150:6443 --token jie7an.cr33vmg6iwxu4jod \

--cri-socket=unix:///var/run/cri-dockerd.sock \

--discovery-token-ca-cert-hash sha256:7258022a0aeead42dd63fbcca3e1418df26b2f59f89ffce238066ee22032b435

注意不要直接复制,修改为自己的

六、k8s环境收尾操作--master节点操作

1、权限操作

<code>定制k8s的登陆权限

mkdir -p $HOME/.kube

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

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

2、命令补全

放到master主机的环境文件中

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

echo "source <(kubeadm completion bash)" >> ~/.bashrc

source ~/.bashrc

3、下载kube-flannel.yml

如果找不到下载,可以QQ联系我:1445144210

4、编辑脚本并执行

# cat flannel.sh

#!/bin/bash

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.openlab.cn/google_containers/$i

docker push kubernetes-register.openlab.cn/google_containers/$i

docker rmi flannel/$i

done

执行脚本文件:sh flannel.sh

 5、修改配置文件

sed -i '/ image:/s#docker.io/flannel#kubernetes-register.openlab.cn/google_containers#' kube-flannel.yml

6、应用配置文件

# kubectl apply -f kube-flannel.yml

 7、检查效果

[root@kubernetes-master ~]# kubectl get node

NAME STATUS ROLES AGE VERSION

kubernetes-master.openlab.cn Ready control-plane 18m v1.28.0

kubernetes-node1.openlab.cn Ready <none> 16m v1.28.0

kubernetes-node2.openlab.cn Ready <none> 16m v1.28.0

kubernetes-node3.openlab.cn Ready <none> 16m v1.28.0

[root@kubernetes-master ~]# kubectl get pod -n kube-system

NAME READY STATUS RESTARTS AGE

coredns-76f899b8cf-f5d5g 1/1 Running 0 18m

coredns-76f899b8cf-qd5zl 1/1 Running 0 18m

etcd-kubernetes-master.openlab.cn 1/1 Running 0 18m

kube-apiserver-kubernetes-master.openlab.cn 1/1 Running 0 18m

kube-controller-manager-kubernetes-master.openlab.cn 1/1 Running 0 18m

kube-proxy-c5lbh 1/1 Running 0 18m

kube-proxy-h5s6t 1/1 Running 0 16m

kube-proxy-lkpxq 1/1 Running 0 16m

kube-proxy-zqbrh 1/1 Running 0 16m

kube-scheduler-kubernetes-master.openlab.cn 1/1 Running 0 18m

#使用第二条命令全是Running就表示完成了

 8、查看集群状态

[root@kubernetes-master ~]# kubectl get cs

Warning: v1 ComponentStatus is deprecated in v1.19+

NAME STATUS MESSAGE ERROR

controller-manager Healthy ok

etcd-0 Healthy ok

scheduler Healthy ok

七、扩展:kubectl可以在node节点上运行吗?

kubectl的运行是需要进行配置的,它的配置文件是$HOME/.kube,如果想要在node节点运行此命令,需要将master上的.kube文件复制到node节点上,即在master节点上执行下面操作:

scp -r $HOME/.kube kubernetes-node1.openlab.cn:$HOME/

​scp -r $HOME/.kube kubernetes-node2.openlab.cn:$HOME/

​scp -r $HOME/.kube kubernetes-node3.openlab.cn:$HOME/

 测试:在node节点



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。