使用 kubeadm 部署 kubernetes,kubeedge部署

使用 kubeadm 部署 kubernetes安装 containerd
# debian 系
$ sudo apt install containerd.io# rhel 系
$ sudo yum install containerd

安装 containerd

# Debian 系统

$ sudo apt installcontainerd.io

#rhel 部分

$ sudo yum installcontainerd.io

#配置 containerd

创建新的/etc/systemd/system/cri-containerd.service 文件

[单元]

描述=kubernetes 的containerd 容器运行时

文档=https://containerd.io

After=network.target local-fs.target

[服务]

ExecStartPre=-/sbin/modprobe 覆盖

ExecStart=/usr/bin/containerd –config //etc/cri-containerd/config.toml

类型=通知

代理=是

KillMode=进程

重新启动=始终

重启秒=5

# 使用非零限制*会因会计开销而导致性能问题

# 我们建议在内核中使用cgroup 进行容器本地记帐。

极限NPROC=无穷大

极限CORE=无穷大

LimitNOFILE=无穷大

# 如果您的systemd 版本不支持,请注释TasksMax。

# 仅systemd 226及以上版本支持此版本。

任务最大值=无穷大

OOMScoreAdjust=-999

[安装]

WantedBy=多用户.Target

创建新的/etc/cri-containerd/config.tomlcontainerd 配置文件

版本=2

# 持久化数据位置

root=\’/var/lib/cri-containerd\’

# 运行时状态信息

状态=\’/run/cri-containerd\’

插件目录=\’\’

无效插件=[]

必需的插件=[]

#设置containerd的OOM分数

oom_score=0

[玻璃钢]

地址=\’/run/cri-containerd/cri-containerd.sock\’

tcp_地址=\’\’

tcp_tls_cert=\’\’

tcp_tls_key=\’\’

# 套接字UID

uid=0

# 套接字gid

组号=0

最大接收消息大小=16777216

最大发送消息大小=16777216

[调试]

地址=\’\’

格式=\’json\’

uid=0

组号=0

级别=\’\’

[指标]

地址=\’127.0.0.1:1338\’

grpc_histogram=false

[c组]

路径=\’\’

[暂停]

\’io.containerd.timeout.shim.cleanup\’=\’5s\’

\’io.containerd.timeout.shim.load\’=\’5s\’

\’io.containerd.timeout.shim.shutdown\’=\’3s\’

\’io.containerd.timeout.task.state\’=\’2s\’

[插入]

[插件.\’io.containerd.gc.v1.scheduler\’]

暂停阈值=0.02

删除阈值=0

突变阈值=100

计划延迟=\’0s\’

启动延迟=\’100ms\’

[插件.\’io.containerd.grpc.v1.cri\’]

禁用tcp 服务=true

流服务器地址=\’127.0.0.1\’

流服务器端口=\’0\’

Stream_idle_timeout=\’4小时0分0秒\’

启用_selinux=false

selinux_category_range=1024

sandbox_image=\’registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.5\’

统计收集周期=10

# systemd_cgroup=false

启用_tls_streaming=false

最大容器日志行大小=16384

禁用_cgroup=false

禁用_apparmor=false

strict_oom_score_adj=false

最大并发下载数=3

禁用进程挂载=false

取消设置_seccomp_profile=\’\’

allow_missing_hugetlb_controller=true

禁用_hugetlb_controller=true

要忽略的图像定义体积=false

[插件.\’io.containerd.grpc.v1.cri\’.containerd]

快照器=\’overlayfs\’

默认运行时名称=\’runc\’

无枢轴=false

disable_snapshot_annotations=false

Discard_unpacked_layers=false

[插件.\’io.containerd.grpc.v1.cri\’.containerd.runtimes]

[插件.\’io.containerd.grpc.v1.cri\’.containerd.runtimes.runc]

运行时类型=\’io.containerd.runc.v2\’

pod_annotations=[]

容器注释=[]

非特权主机设备=false

基本运行时规范=\’\’

[插件.\’io.containerd.grpc.v1.cri\’.containerd.runtimes.runc.options]

# SystemdCgroup 启用systemd cgroup。

SystemdCgroup=true

# BinaryName 是runc 二进制文件的二进制名称。

# 二进制名称=\’runc\’

# 二进制名称=\’crun\’

# NoPivotRoot 在创建容器时禁用枢轴根。

#NoPivotRoot=false

# NoNewKeyring 禁用容器的新密钥环。

#NoNewKeyring=false

# ShimCgroup 将shim 放置在cgroup 中。

# ShimCgroup=\’\’

# IoUid 设置I/O 管道uid。

#IoUid=0

# IoGid 设置I/O 管道GID。

#IoGid=0

# root 是runc 根目录。

根=\’\’

# CriuPath 是criu 二进制路径。

#criupas=\’\’

# CriuImagePath 是criu 图像的路径

#CriuImagePath=\’\’

# CriuWorkPath 是criu 工作路径。

# CriuWorkPath=\’\’

[插件.\’io.containerd.grpc.v1.cri\’.cni]

bin_dir=\’/opt/cni/bin\’

conf_dir=\’/etc/cni/net.d\’

最大会议数=1

conf_template=\’\’

[插件.\’io.containerd.grpc.v1.cri\’.registry]

config_path=\’/etc/cri-containerd/certs.d\’

[插件.\’io.containerd.grpc.v1.cri\’.registry.headers]

# Foo=[\’酒吧\’]

[插件.\’io.containerd.grpc.v1.cri\’.image_decryption]

关键型号=\’\’

[插件.\’io.containerd.grpc.v1.cri\’.x509_key_pair_streaming]

tls_cert_file=\’\’

tls_key_file=\’\’

[插件.\’io.containerd.internal.v1.opt\’]

路径=\’/opt/cri-containerd\’

[插件.\’io.containerd.internal.v1.restart\’]

间隔=\’10 秒\’

[插件.\’io.containerd.metadata.v1.bolt\’]

content_sharing_policy=\’共享\’

[插件.\’io.containerd.monitor.v1.cgroups\’]

no_prometheus=false

[插件.\’io.containerd.runtime.v2.task\’]

平台=[\’linux/amd64\’]

[插件.\’io.containerd.service.v1.diff-service\’]

默认=[\’行走\’]

[插件.\’io.containerd.snapshotter.v1.devmapper\’]

根路径=\’\’

池名称=\’\’

基本图像大小=\’\’

异步删除=假

#安装kubeletkubeadmkubectlcri-toolskubernetes-cni

#Ubuntu/Debian

$ apt-get update apt-get install -y apt-transport-https

$curlhttps://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | 添加apt 密钥-

$ cat EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list

deb https://mirrors.aliyun.com/kubernetes/apt/kubernetes-xenial main

结束后

$ apt-get 更新

$ apt-get install -y kubelet kubeadm kubectl

#CentOS/Fedora

$ cat EOF /etc/yum.repos.d/kubernetes.repo

[库伯内特]

名称=Kubernetes

baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/

有效=1

gpg检查=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

结束后

$ sudo yum install -y kubelet kubeadm kubectl

#修改内核的运行参数

$ cat EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf

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

net.ipv4.ip_forward=1

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

结束后

# 应用设置

$ sysctl –系统

#配置 kubelet

#修改kubelet.service

/etc/systemd/system/kubelet.service.d/10-proxy-ipvs.conf写入以下内容

# 启用ipvs相关内核模块

[服务]

ExecStartPre=-/sbin/modprobe ip_vs

ExecStartPre=-/sbin/modprobe ip_vs_rr

ExecStartPre=-/sbin/modprobe ip_vs_wrr

ExecStartPre=-/sbin/modprobe ip_vs_sh

通过运行以下命令应用配置:

$ sudo systemctl 守护进程重新加载

#部署

#master

$ systemctl 启用cri-containerd

$ systemctl 启动cri-containerd

$ sudo kubeadm init \\

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

–pod-network-cidr 10.244.0.0/16 \\

–cri-socket /run/cri-containerd/cri-containerd.sock \\

–v5\\

–ignore-preflight-errors=全部

–pod-network-cidr 10.244.0.0/16 参数与后续的CNI 插件相关。这里我们以法兰绒为例。如果您稍后部署其他类型的网络插件,请更改此参数。

执行过程中可能会出现错误,比如缺少依赖包等。按照提示进行安装。

如果执行成功就会输出

.

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

I1116 12:35:13.270407 86677 request.go:538]节流请求花费了181.409184毫秒,request: POST:https://192.168.199.100:6443/api/v1/namespaces/服务帐户

I1116 12:35:13.470292 86677 request.go:538]节流请求花费了186.088112毫秒,request: POST:https://192.168.199.100:6443/api/v1/namespaces/配置图

[插件] 必需插件: 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

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

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

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

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

kubeadm 加入192.168.199.100:6443 –token cz81zt.orsy9gm9v649e5lf \\

–discovery-token-ca-cert-hash sha256:5edb316fd0d8ea2792cba15cdf1c899a366f147aa03cba52d4e5c5884ad836fe

#node 工作节点

在另一台主机上重复部署部分中的前面步骤来安装和配置kubelet。按照提示加入集群。

$ systemctl 启用cri-containerd

$ systemctl 启动cri-containerd

$ kubeadm 加入192.168.199.100:6443 \\

–token cz81zt.orsy9gm9v649e5lf \\

–discovery-token-ca-cert-hash sha256:5edb316fd0d8ea2792cba15cdf1c899a366f147aa03cba52d4e5c5884ad836fe \\

–cri-socket /run/cri-containerd/cri-containerd.sock

#查看服务

所有服务启动后,使用crictl查看本地实际运行的容器。这些服务大致分为三类:主节点服务、工作节点服务和其他服务。

CONTAINER_RUNTIME_ENDPOINT=/run/cri-containerd/cri-containerd.sock crictl ps -a

#主节点服务

apiserver 是一个系统范围的外部接口,提供RESTful 方法供客户端和其他组件调用。

调度器负责调度资源并将特定的Pod 分配给特定的节点。

控制器管理器负责管理控制器,包括端点控制器(更新与服务和Pod 相关的信息)和复制控制器(以配置的值维护特定Pod 的复制)。

#工作节点服务

代理提供对Pod 上服务的访问。

#其它服务

etcd 是一个全状态存储数据库。

#使用

将/etc/kubernetes/admin.conf 复制到~/.kube/config

运行$ kubectl get all -A 查看已启动的服务。

CoreDNS 未正确启动,因为未部署CNI 插件。有关使用Kubernetes 的信息,请参阅以下章节:

#部署 CNI

我们以法兰绒为例。

#flannel

检查podCIDR 设置

$ kubectl 获取节点-o yaml CIDR |

输出

Pod CIDR: 10.244.0.0/16

Pod CIDR:

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

#master 节点默认不能运行 pod

使用kubeadm 部署单节点集群时默认不可用。运行以下命令以取消限制。

$ kubectl 污点节点–all node-role.kubernetes.io/master-

# 恢复默认值

# $ kubectl 污点节点NODE_NAME node-role.kubernetes.io/master=true:NoSchedule

以上使用#kubeadm部署kubernetes的相关内容来源网络,仅供参考。相关信息请参见官方公告。

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

Like (0)
CSDN的头像CSDN
Previous 2024年7月26日
Next 2024年7月26日

相关推荐

发表回复

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