Linux容器篇 Linux进入容器命令

Linux容器篇kubernetes集群架构和组件 master节点组件 kube-apiserver:Kubernetes API,集群的统一入口,各组件的协调者,以RESTful

kubernetes集群架构和组件

master节点组件

kube-apiserver:Kubernetes API,集群的统一入口和各个组件的协调器。它通过RESTful API提供接口服务,所有对象资源的添加、删除、修改、监控操作都交给API服务器。处理它并保存到Etcd。

kube-controller-manager:处理集群内的常规后台事务。一个资源对应一个控制器,控制器管理器负责管理这些控制器。

kube-scheduler:根据算法选择新创建的Pode节点。

Node节点组件

kubelet:kubelet 是节点上master 的代理,执行本地运行容器的生命周期,包括创建容器、在pod 上挂载数据卷、下载机密以及获取容器和节点状态管理。 kubelet 将每个pod 转换为一组容器。

kube-proxy:在节点上实现pod 网络代理,以维护网络规则和四层负载均衡。

容器处理:运行Container Engine、Docker、containerd、podman等容器。

kubeadm搭建一个简单的集群

硬件配置

学习环境:

主控-2C/2G/20G

节点2C/2G/20G

测试环境:

主控-4C/8G/50G

节点-8C/16G/100G

生产环境:

Master-8C/16G/500G

节点-16C/32G/1T

环境准备

操作系统:CentOS7.9-x86_64Docker版本:26.1.4(CE)kubernetes:1.28

服务器规划

主机名ipk8s-master192.168.3.10k8s-node1192.168.3.11k8s-node2192.168.3.12

操作系统初始化配置

#关闭防火墙

systemctl 停止防火墙。 systemctl 禁用防火墙。

#关闭塞利纳克斯

设置力0

sed -i \’s/SELINUX=enforcing/SELINUX=disabled/\’ /etc/selinux/config

#关闭交换分区

sed -ri \’s@(.*swap.*)@#\\1@g\’ /etc/fstab

#更改主机名

hostnamectl set-hostname 主机名

修改#hosts文件(无需配置)

猫/etc/hosts EOF

192.168.3.10 k8s-master

192.168.3.11 k8s-node1

192.168.3.12 k8s-node2

结束后

#要启用内核ipv4转发,需要加载overlay和br_netfilter模块,运行以下命令:

cat /etc/modules-load.d/k8s.conf EOF

覆盖

br_net过滤器

结束后

modprobe覆盖

modprobe br_netfilter

#配置内核参数以将桥接的IPv4 流量传递到iptables 链

猫/etc/sysctl.d/k8s.conf EOF

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

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

结束后

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

#时间同步,阿里云时钟服务器集成配置

服务器ntp.aliyun.com iburst

安装docker

配置Docker 镜像源

# 步骤1: 安装一些必需的系统工具

sudo yum install -y yum-utils 设备映射器持久数据lvm2

# 步骤2: 添加软件源信息

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

#步骤3

sudo sed -i \’s+download.docker.com+mirrors.aliyun.com/docker-ce+\’ /etc/yum.repos.d/docker-ce.repo

# 步骤4: 更新并安装Docker-CE

sudo yum makecache 快

sudo yum -y 安装docker-ce

配置图像加速器

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json -\’EOF\’

{

\’registry-mirrors\’:[\’https://5fid4glg.mirror.aliyuncs.com\’,\’https://docker.m.daocloud.io\’],

\’exec-opts\’: [\’native.cgroupdriver=systemd\’]

}

结束后

注意:这里的大多数镜像源都是两年前的。如您所知,Docker Hub 目前尚未公开,但它足以学习。

\”exec-opts\” : [\”native.cgroupdriver=systemd\”] 此配置为官方推荐配置,无需更改。

“不安全的注册表”: 证书验证

配置完成后,加载配置文件,重新启动docker,并将其配置为开机自动启动。

重新加载systemctl 守护进程

systemctl 启用docker –now

安装cri-docker

wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.14/cri-dockerd-0.3.14-3.el7.x86_64.rpm

如果由于网络原因无法下载,您可以科学地在线下载,然后上传到您的机器上。

指定从属镜像的地址。

添加cri-docker.service配置文件:pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9

# vi /usr/lib/systemd/system/cri-docker.service

.

[服务]

类型=通知

ExecStart=/usr/bin/cri-dockerd –container-runtime-endpoint fd://–pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9

ExecReload=/bin/kill -s HUP $MAINPID

超时秒数=0

重启秒=2

重新启动=始终

.

重新加载systemctl 守护进程

在systemctl 中启用cri-docker –now

安装kubernetes组件

配置yum源

猫T 恤/etc/yum.repos.d/kubernetes.repo

[库伯内特]

名称=Kubernetes

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

有效=1

gpg检查=1

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

结束后

安装指定版本的kubeadm、kubelet 和kubectl 组件

kubeadm:初始化集群工具

kubelet:在集群中的每个节点上用于启动pod、容器等。

kubectl:用于与集群通信的命令行工具(只需安装在管理节点上即可)

百胜安装kubelet-1.28.0 kubeadm-1.28.0 kubectl-1.28.0 -y

配置kubelet 服务开机自动启动

使用systemctl –now 启用kubelet

配置Master节点

在主节点上运行

kubeadm 初始化\\

–apiserver-advertise-address=\’192.168.3.10\’ \\

–image-repositoryregistry.aliyuncs.com/google_containers \\

–kubernetes-版本v1.28.0 \\

–service-cidr=10.96.0.0/16 \\

–pod-network-cidr=10.244.0.0/16 \\

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

apiserver-advertise-address 集群广告地址,或者监听地址image-repositoryregistry.aliyuncs.com/google_containers 默认为k8s.gcr.io,国内无法访问。阿里云镜像仓库地址。此处指定kubernetes-version v1.28.0。 k8s版本与机器上安装的版本匹配 service-cidr=10.96.0.0/16 集群内部虚拟网络,pod统一访问入口 pod-network-cidr=10.244 .0.0/16 pod网络,CNI网络组件yanl要保留一致cri-socket=unix:///var/run/cri-dockerd.sock 指定接口ignore-preflight-errors=all 忽略警告

这里的执行可能非常慢,因为它必须从镜像站检索图像。如果你觉得速度慢,你也可以尝试先获取图像,然后初始化它。

拉取kubeadm 配置镜像\\

–image-repositoryregistry.aliyuncs.com/google_containers \\

–kubernetes-版本v1.28.0 \\

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

整个流程如下:

[root@k8s-master ~]# kubeadm init \\

–apiserver-advertise-address=\’192.168.3.10\’ \\

–image-repositoryregistry.aliyuncs.com/google_containers \\

–kubernetes-版本v1.28.0 \\

–service-cidr=10.96.0.0/16 \\

–pod-network-cidr=10.244.0.0/16 \\

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

[init] 使用Kubernetes 版本: v1.28.0

[预检] 执行预检检查

[预检] 拉取设置Kubernetes 集群所需的镜像

[预检] 这可能需要1-2 分钟,具体取决于您的互联网连接速度

[预检] 您还可以使用“kubeadm config Images pull”提前执行此操作

[证书] 使用证书目录文件夹“/etc/kubernetes/pki”

[certs] 生成“ca”证书和密钥

[certs] 生成“apiserver”证书和密钥

[证书] apiserver 服务证书是针对DNS 名称[k8s-master kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local] 和IP [10.96.0.1 192.168.3.10] 进行签名的。

[certs] 生成“apiserver-kubelet-client”证书和密钥

[certs] 生成“front-proxy-ca”证书和密钥

[certs] 生成“前端代理客户端”证书和密钥

[certs] 生成“etcd/ca”证书和密钥

[certs] 生成“etcd/server”证书和密钥

[证书] etcd/server 提供的证书针对DNS 名称[k8s-master localhost] 和IP [192.168.3.10 127.0.0.1 :1] 进行签名。

[certs] 生成“etcd/peer”证书和密钥

[证书] etcd/对等服务证书针对DNS 名称[k8s-master localhost] 和IP [192.168.3.10 127.0.0.1 :1] 进行签名。

[certs] 生成“etcd/healthcheck-client”证书和密钥

[certs] 生成“apiserver-etcd-client”证书和密钥

[certs] 生成“sa”密钥和公钥

[kubeconfig] kubeconfig 文件夹“/etc/kubernetes”的使用

[kubeconfig] \’admin.conf\’ 写入kubeconfig 文件

[kubeconfig] 编写kubelet.conf kubeconfig 文件

[kubeconfig] 编写“controller-manager.conf”kubeconfig 文件

[kubeconfig] 写入“scheduler.conf”kubeconfig 文件

[etcd] 在“/etc/kubernetes/manifests”中为本地etcd 创建静态pod 清单

[控制平面] 使用清单文件夹“/etc/kubernetes/manifests”

[control-plane] 为“kube-apiserver”创建静态pod 清单

[控制平面] 为“kube-controller-manager”创建静态pod 清单

[控制平面] 为“kube-scheduler”创建静态pod 清单

将包含[kubelet-start] 标志的kubelet 环境文件写入文件“/var/lib/kubelet/kubeadm-flags.env”

[kubelet-start] 将kubelet 配置写入文件“/var/lib/kubelet/config.yaml”

[kubelet-start] 启动kubelet

[wait-control-plane] 等待kubelet 从目录“/etc/kubernetes/manifests”中将控制平面作为静态pod 启动。这可能最多需要4 分钟。

[apiclient] 所有控制平面组件在10.504564 秒后恢复正常

[upload-config] 将ConfigMap \’kubeadm-config\’ 使用的配置保存到\’kube-system\’ 命名空间

[kubelet] 使用集群中kubelet 的配置在命名空间kube-system 中创建ConfigMap \’kubelet-config\’

跳过[upload-certs] 阶段。请参阅–上传证书。

[mark-control-plane] 通过添加label: 将节点k8s-master 标记为控制平面[node-role.kubernetes.io/control-plane node.kubernetes.io/exclude-from-external-load-balancers]

[mark-control-plane] 添加污点以将节点k8s-master 标记为控制平面[node-role.kubernetes.io/control-plane:NoSchedule]

[引导令牌] 使用token: twzwgv.xqhb98gfu1edpm62

[bootstrap-token] 配置bootstrap token、集群信息ConfigMap、RBAC角色

[bootstrap-token] 配置RBAC 规则以允许节点引导令牌检索节点

[bootstrap-token] 配置RBAC 规则以允许节点引导令牌发布CSR,以便节点可以获得长期证书凭证。

[bootstrap-token] 配置RBAC 规则以允许csrapprover 控制器自动批准来自节点引导令牌的CSR

[bootstrap-token] 配置RBAC 规则以允许集群中所有节点的客户端证书轮换

[bootstrap-token] 在“kube-public”命名空间中创建“cluster-info”ConfigMap

[kubelet-finalize] 更新“/etc/kubernetes/kubelet.conf”以指向可旋转的kubelet 客户端证书和密钥

[附加组件] 必需附加组件: CoreDNS

[插件] 必需插件: kube-proxy

Kubernetes 控制平面已成功初始化。

要开始使用集群,您需要以普通用户: 身份运行以下命令:

mkdir -p $HOME/.kube

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

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

或者,如果您是root 用户,则可以运行:

导出KUBECONFIG=/etc/kubernetes/admin.conf

现在您需要将Pod 网络部署到集群。

使用: 中列出的选项之一运行“kubectl apply -f [podnetwork].yaml”。

https://kubernetes.io/docs/concepts/cluster-administration/addons/

然后,您可以通过以root: 在每个工作节点上运行以下命令来加入任意数量的工作节点:

kubeadm 加入192.168.3.10:6443 –token twzwgv.xqhb98gfu1edpm62 \\

–discovery-token-ca-cert-hash sha256:43eff3fcb345a6138ae9254d60b219cd04dd5e18cc2910d0eb52db209bb93b26

[root@k8s-master ~]#

复制kubeconfig 配置文件

mkdir -p $HOME/.kube

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

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

将Node节点加入集群

在node节点执行

kubeadm join 192.168.3.10:6443 –token twzwgv.xqhb98gfu1edpm62 \\
–discovery-token-ca-cert-hash sha256:43eff3fcb345a6138ae9254d60b219cd04dd5e18cc2910d0eb52db209bb93b26 \\
–cri-socket=unix:///var/run/cri-dockerd.sock

为了安全性,kubeadm生成的token,默认有效期为24小时,过期之后就无法使用了,需要重新生成加入节点命令:

kubeadm token create –print-join-command

部署容器网络

提前下载好calico的镜像文件,导入所有节点

ls *.tar | xargs -i docker load -i {}

在master节点使用yaml文件创建pod

kubectl create -f tigera-operator.yaml
kubectl create -f custom-resources.yaml

注意:按官方给的做法,是直接使用yaml文件然后在线下载,必须保证镜像源的访问速度才行。不然需要很久很久

到这里,集群就算是搭建完成了

[root@localhost ~]# kubectl get pods -n calico-system
NAME READY STATUS RESTARTS AGE
calico-kube-controllers-85955d4f5b-rlrrg 1/1 Running 0 21s
calico-node-gvv4h 1/1 Running 0 21s
calico-node-mhkxp 0/1 Running 0 21s
calico-node-z9czg 1/1 Running 0 21s
calico-typha-6dfcdf98b5-984zj 1/1 Running 0 22s
calico-typha-6dfcdf98b5-pvg5j 1/1 Running 0 18s
csi-node-driver-b5h5x 2/2 Running 0 21s
csi-node-driver-htgqx 2/2 Running 0 21s
csi-node-driver-js88m 2/2 Running 0 21s
[root@localhost ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master Ready control-plane 4h4m v1.28.0
k8s-node1 Ready <none> 4h2m v1.28.0
k8s-node2 Ready <none> 4h2m v1.28.0

Master节点命令自动补全

yum install bash-completion -y
echo \’source <(kubectl completion bash)\’ >>~/.bashrc

#以上关于Linux容器篇的相关内容来源网络仅供参考,相关信息请以官方公告为准!

原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/92833.html

(0)
CSDN的头像CSDN
上一篇 2024年7月4日
下一篇 2024年7月4日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注