01 基于yum方式部署Kubernetes集群

news2025/1/12 12:28:53

文章目录

  • 1.实验环境准备
  • 2.部署单节点的etcd
    • 1.在192.168.221.133节点安装etcd服务
    • 2.修改etcd的配置文件
    • 3.启动etcd并设置开机自启动
    • 4.检查集群的健康状态
    • 5.操作etcd服务
  • 3. master 组件部署
    • 1.在192.168.221.133节点安装master服务
    • 2.配置apiserver组件
    • 3.配置master的组件
    • 4.启动服务
    • 5.检查服务是否安装正常
  • 4. node组件部署
    • 1.在所有的node节点上安装node服务
    • 2.修改配置文件指定master节点信息
    • 3.修改Kubelet组件的配置文件
    • 4.启动服务并设置开机自启动
  • 5.所有节点部署flannel网络插件
    • 1.安装flannel网络插件
    • 2.修改flannel的配置文件
    • 3.修改etcd数据库信息
    • 4.重启服务
    • 5.修改docker的启动脚本
  • 6.配置 harbor为镜像仓库
    • 6.1 部署镜像仓库
    • 6.2 harbor 使用
      • 6.2.1 修改/etc/docker/daemon.json
      • 6.2.2 登录harbor认证
      • 6.2.3 网页新建项目
      • 6.2.4 推送测试
  • 7. K8S troubleshooting

1.实验环境准备

192.168.221.128      master
192.168.221.153      node01
192.168.221.136      node02
192.168.221.141      harbor

2.部署单节点的etcd

1.在192.168.221.133节点安装etcd服务

yum -y install etcd

2.修改etcd的配置文件

cp /etc/etcd/etcd.conf /etc/etcd/etcd.conf-`date +%F`
vim /etc/etcd/etcd.conf  # 只修改以下2行即可。
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.221.133:2379"
常见的参数说明:
	ETCD_NAME :
		ETCD的节点名
	ETCD_DATA_DIR:
		ETCD的数据存储目录
	ETCD_SNAPSHOT_COUNTER:
		多少次的事务提交将触发一次快照
	ETCD_HEARTBEAT_INTERVAL:
		ETCD节点之间心跳传输的间隔,单位毫秒
	ETCD_ELECTION_TIMEOUT:
		该节点参与选举的最大超时时间,单位毫秒
	ETCD_LISTEN_PEER_URLS:
		该节点与其他节点通信时所监听的地址列表,多个地址使用逗号隔开,其格式可以划分为scheme://IP:PORT,这里的scheme可以是http、https
	ETCD_LISTEN_CLIENT_URLS:
		该节点与客户端通信时监听的地址列表
	ETCD_INITIAL_ADVERTISE_PEER_URLS:
		该成员节点在整个集群中的通信地址列表,这个地址用来传输集群数据的地址。因此这个地址必须是可以连接集群中所有的成员的。
	ETCD_INITIAL_CLUSTER:
		配置集群内部所有成员地址,其格式为:ETCD_NAME=ETCD_INITIAL_ADVERTISE_PEER_URLS,如果有多个使用逗号隔开
	ETCD_ADVERTISE_CLIENT_URLS:
		广播给集群中其他成员自己的客户端地址列表
	ETCD_INITIAL_CLUSTER_STATE:
		初始化集群状态,new表示新建
	ETCD_INITIAL_CLUSTER_TOKEN:
		初始化集群token

3.启动etcd并设置开机自启动

[root@192.168.221.133 ~]# systemctl start etcd
[root@192.168.221.133 ~]# 
[root@192.168.221.133 ~]# systemctl enable etcd

4.检查集群的健康状态

etcdctl -C http://192.168.221.133:2379 cluster-health

也可以使用:
	etcdctl --endpoints  http://192.168.221.133:2379 cluster-health

在这里插入图片描述

5.操作etcd服务

增:
	mk:
		创建key.
	mkdir:
		创建目录.

删:
    rm:
        删除key和目录的.

    rmdir:
        删除key或者空目录.
	
改:
	set:
		修改key的value.

	update:
		修改已经存在key的value.

查:
    ls:
        查看某个目录.

    get:
        查看某个key的value.
        

温馨提示:
	key被抽象为2中类型的资源,即文件和目录.

3. master 组件部署

1.在192.168.221.133节点安装master服务

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

2.配置apiserver组件

cp /etc/kubernetes/apiserver /etc/kubernetes/apiserver-`date +%F`
vim /etc/kubernetes/apiserver 

# 指定apiserver的监听地址,建议绑定所有地址。只能配置IP地址。
KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"

# 指定apiserver的监听端口。
KUBE_API_PORT="--port=8080"

# 指定KUBELET_PORT的端口
KUBELET_PORT="--kubelet-port=10250"

# etcd集群中以逗号分隔的节点列表
KUBE_ETCD_SERVERS="--etcd-servers=http://192.168.221.128:2379"

# 要用于服务(SERVICE)的地址范围
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=192.168.0.0/16"

3.配置master的组件

cp /etc/kubernetes/config /etc/kubernetes/config-`date +%F`

vim /etc/kubernetes/config 
KUBE_MASTER="--master=http://192.168.221.133:8080"
如下图所示,相关参数说明如下:
KUBE_LOGTOSTDERR="--logtostderr=true"
	生成系统日志,会存放在"/var/log"目录。

KUBE_LOG_LEVEL="--v=0"
	设置日志消息级别,0代表的是debug模式。
KUBE_ALLOW_PRIV="--allow-privileged=false"
	是否允许使用特权容器,默认是不允许使用特权容器的。	
KUBE_MASTER="--master=http://192.168.221.128:8080"
	指定kube master的地址。	
温馨提示:
	在启动容时时,我们默认启动的容器时系统的内核参数是以只读的方式挂载,因此在容器内默认是无法修改内核参数的。
	如果非要在容器内部修改系统的内核参数,则在启动时应该使用"--privileged"让该容器称为特权容器。

在这里插入图片描述

4.启动服务

systemctl enable kube-apiserver.service kube-controller-manager.service kube-scheduler.service
systemctl restart kube-apiserver.service kube-controller-manager.service kube-scheduler.service

温馨提示:
	服务启动成功后,会监听多个端口哟~

5.检查服务是否安装正常

kubectl get componentstatus 

在这里插入图片描述

4. node组件部署

1.在所有的node节点上安装node服务

yum -y install kubernetes-node
温馨提示:
	如果你的环境足够"干净",则会自行安装相关的环境,当然也包括docker环境哟~

2.修改配置文件指定master节点信息

[root@k8s102.oldboyedu.com ~]# vim /etc/kubernetes/config 
KUBE_MASTER="--master=http://192.168.221.128:8080"
温馨提示:
	我们应该将所有的node节点都指向master节点。

3.修改Kubelet组件的配置文件

vim /etc/kubernetes/kubelet 

# 指定kubelet组件监听的地址,建议设置为'0.0.0.0',不能设置为主机名,否则不会监听相应的端口。
KUBELET_ADDRESS="--address=0.0.0.0"

# 指定kubelet组件监听的地址端口。
KUBELET_PORT="--port=10250"

# 指定主机名。
KUBELET_HOSTNAME="--hostname-override=192.168.221.153"

# 指定apiserver的地址。
KUBELET_API_SERVER="--api-servers=http://192.168.221.128:8080"

温馨提示:
	我们可以将当前的配置文件移动到其它node节点稍作修改即可,比如只需改动"KUBELET_HOSTNAME"

4.启动服务并设置开机自启动

systemctl restart kubelet.service kube-proxy.service 
systemctl enable kubelet.service kube-proxy.service 
温馨提示:
	如下图所示,当我们成功启动服务时。

在这里插入图片描述

5.所有节点部署flannel网络插件

1.安装flannel网络插件

yum -y install flannel 
温馨提示:
	在master节点和所有的node节点部署flannel网络插件。

2.修改flannel的配置文件

sed -i 's#127.0.0.1#192.168.221.128#' /etc/sysconfig/flanneld 
温馨提示:
	所有节点都需要修改etcd的数据库地址,由于咱们的环境仅有一台,生产环境中是需要使用逗号分割指定集群的哟~

3.修改etcd数据库信息

etcdctl mk /atomic.io/network/config '{"Network":"172.18.0.0/16","Backend": {"Type": "vxlan"}}'
相关参数说明:
	/atomic.io/network/config
		指定KEY的名称。		
	"Network":"172.18.0.0/16",
		指定网段为"172.18.0.0/16""Backend": {"Type": "vxlan"}
		指定flannel的类型为"vxlan"。		
温馨提示:	
	由于在flannel的配置文件中名为"FLANNEL_ETCD_PREFIX"的默认值为"/atomic.io/network",因此我们的需要手动指定该值的前缀,当然,该前缀咱们也可以自定义哟。

4.重启服务

#每一个节点都重启
systemctl enable flanneld.service 
systemctl restart flanneld.service 
systemctl  restart  docker

再启动flannel,通过ifconfig可以查看到flannel0
在这里插入图片描述

5.修改docker的启动脚本

(1)修改docker服务的启动脚本
vim /usr/lib/systemd/system/docker.service
#在[Service]区域下增加一行
ExecStartPost=/usr/sbin/iptables -P FORWARD ACCEPT
(2)使得文件生效并重启服务
systemctl daemon-reload && systemctl restart docker
温馨提示:
	这是docker的一个小bug,请在所有的节点上都执行上述操作,包括master节点,因为后续会用到它。

6.配置 harbor为镜像仓库

6.1 部署镜像仓库

[root@harbor harbor]# cat docker-compose.yml
version: '2.3'
services:
  log:
    image: goharbor/harbor-log:v2.3.1
    container_name: harbor-log
    restart: always
    dns_search: .
    cap_drop:
      - ALL
    cap_add:
      - CHOWN
      - DAC_OVERRIDE
      - SETGID
      - SETUID
    volumes:
      - /var/log/harbor/:/var/log/docker/:z
      - type: bind
        source: ./common/config/log/logrotate.conf
        target: /etc/logrotate.d/logrotate.conf
      - type: bind
        source: ./common/config/log/rsyslog_docker.conf
        target: /etc/rsyslog.d/rsyslog_docker.conf
    ports:
      - 127.0.0.1:1514:10514
    networks:
      - harbor
  registry:
    image: goharbor/registry-photon:v2.3.1
    container_name: registry
    restart: always
    cap_drop:
      - ALL
    cap_add:
      - CHOWN
      - SETGID
      - SETUID
    volumes:
      - /data/registry:/storage:z
      - ./common/config/registry/:/etc/registry/:z
      - type: bind
        source: /data/secret/registry/root.crt
        target: /etc/registry/root.crt
      - type: bind
        source: ./common/config/shared/trust-certificates
        target: /harbor_cust_cert
    networks:
      - harbor
    dns_search: .
    depends_on:
      - log
    logging:
      driver: "syslog"
      options:
        syslog-address: "tcp://localhost:1514"
        tag: "registry"
  registryctl:
    image: goharbor/harbor-registryctl:v2.3.1
    container_name: registryctl
    env_file:
      - ./common/config/registryctl/env
    restart: always
    cap_drop:
      - ALL
    cap_add:
      - CHOWN
      - SETGID
      - SETUID
    volumes:
      - /data/registry:/storage:z
      - ./common/config/registry/:/etc/registry/:z
      - type: bind
        source: ./common/config/registryctl/config.yml
        target: /etc/registryctl/config.yml
      - type: bind
        source: ./common/config/shared/trust-certificates
        target: /harbor_cust_cert
    networks:
      - harbor
    dns_search: .
    depends_on:
      - log
    logging:
      driver: "syslog"
      options:
        syslog-address: "tcp://localhost:1514"
        tag: "registryctl"
  postgresql:
    image: goharbor/harbor-db:v2.3.1
    container_name: harbor-db
    restart: always
    cap_drop:
      - ALL
    cap_add:
      - CHOWN
      - DAC_OVERRIDE
      - SETGID
      - SETUID
    volumes:
      - /data/database:/var/lib/postgresql/data:z
    networks:
      harbor:
    dns_search: .
    env_file:
      - ./common/config/db/env
    depends_on:
      - log
    logging:
      driver: "syslog"
      options:
        syslog-address: "tcp://localhost:1514"
        tag: "postgresql"
    shm_size: '1gb'
  core:
    image: goharbor/harbor-core:v2.3.1
    container_name: harbor-core
    env_file:
      - ./common/config/core/env
    restart: always
    cap_drop:
      - ALL
    cap_add:
      - SETGID
      - SETUID
    volumes:
      - /data/ca_download/:/etc/core/ca/:z
      - /data/:/data/:z
      - ./common/config/core/certificates/:/etc/core/certificates/:z
      - type: bind
        source: ./common/config/core/app.conf
        target: /etc/core/app.conf
      - type: bind
        source: /data/secret/core/private_key.pem
        target: /etc/core/private_key.pem
      - type: bind
        source: /data/secret/keys/secretkey
        target: /etc/core/key
      - type: bind
        source: ./common/config/shared/trust-certificates
        target: /harbor_cust_cert
    networks:
      harbor:
    dns_search: .
    depends_on:
      - log
      - registry
      - redis
      - postgresql
    logging:
      driver: "syslog"
      options:
        syslog-address: "tcp://localhost:1514"
        tag: "core"
  portal:
    image: goharbor/harbor-portal:v2.3.1
    container_name: harbor-portal
    restart: always
    cap_drop:
      - ALL
    cap_add:
      - CHOWN
      - SETGID
      - SETUID
      - NET_BIND_SERVICE
    volumes:
      - type: bind
        source: ./common/config/portal/nginx.conf
        target: /etc/nginx/nginx.conf
    networks:
      - harbor
    dns_search: .
    depends_on:
      - log
    logging:
      driver: "syslog"
      options:
        syslog-address: "tcp://localhost:1514"
        tag: "portal"

  jobservice:
    image: goharbor/harbor-jobservice:v2.3.1
    container_name: harbor-jobservice
    env_file:
      - ./common/config/jobservice/env
    restart: always
    cap_drop:
      - ALL
    cap_add:
      - CHOWN
      - SETGID
      - SETUID
    volumes:
      - /data/job_logs:/var/log/jobs:z
      - type: bind
        source: ./common/config/jobservice/config.yml
        target: /etc/jobservice/config.yml
      - type: bind
        source: ./common/config/shared/trust-certificates
        target: /harbor_cust_cert
    networks:
      - harbor
    dns_search: .
    depends_on:
      - core
    logging:
      driver: "syslog"
      options:
        syslog-address: "tcp://localhost:1514"
        tag: "jobservice"
  redis:
    image: goharbor/redis-photon:v2.3.1
    container_name: redis
    restart: always
    cap_drop:
      - ALL
    cap_add:
      - CHOWN
      - SETGID
      - SETUID
    volumes:
      - /data/redis:/var/lib/redis
    networks:
      harbor:
    dns_search: .
    depends_on:
      - log
    logging:
      driver: "syslog"
      options:
        syslog-address: "tcp://localhost:1514"
        tag: "redis"
  proxy:
    image: goharbor/nginx-photon:v2.3.1
    container_name: nginx
    restart: always
    cap_drop:
      - ALL
    cap_add:
      - CHOWN
      - SETGID
      - SETUID
      - NET_BIND_SERVICE
    volumes:
      - ./common/config/nginx:/etc/nginx:z
      - type: bind
        source: ./common/config/shared/trust-certificates
        target: /harbor_cust_cert
    networks:
      - harbor
    dns_search: .
    ports:
      - 80:8080
    depends_on:
      - registry
      - core
      - portal
      - log
    logging:
      driver: "syslog"
      options:
        syslog-address: "tcp://localhost:1514"
        tag: "proxy"
networks:
  harbor:
    external: false

启动harbor
docker-compose up -d

6.2 harbor 使用

6.2.1 修改/etc/docker/daemon.json

#每个节点都做

cat /etc/docker/daemon.json
{
"registry-mirrors": [
      "https://kv3qfp85.mirror.aliyuncs.com"
   ],
   "insecure-registries": [
        "idy.com"
    ]
}

重新启动

systemctl daemon-reload
systemctl restart docker.service

6.2.2 登录harbor认证

docker login 192.168.221.141
admin
idy123456

6.2.3 网页新建项目

在这里插入图片描述

6.2.4 推送测试

[root@master ~]# docker images
REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
idy.com/harbor/registry    latest              3a0f7b0a13ef        3 months ago        24.1 MB
idy.com/library/registry   latest              3a0f7b0a13ef        3 months ago        24.1 MB
docker.io/centos           latest              5d0da3dc9764        14 months ago       231 MB

#1.打标签——[规则](域名/仓库名/镜像名)
docker tag docker.io/centos:latest idy.com/harbor/centos:latest
#推送镜像
[root@master ~]# docker push idy.com/harbor/centos:latest
The push refers to a repository [idy.com/harbor/centos]
74ddd0ec08fa: Pushed
latest: digest: sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dc size: 529

查看镜像仓库
在这里插入图片描述

7. K8S troubleshooting

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/24739.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

m基于MIMO中继通信和非规则LDPC编译码的matlab仿真,其中波束形成为SVD,MMSE,中继包括AF,DF,CF

目录 1.算法概述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法概述 即在非规则LDPC下,且源节点1个,中继一个,目标节点一个,天线也是1的情况对比三种中继协作协议的误码率。 做非规则LDPC码的以编码协作形…

computed计算方法不被调用的原因;只有在使用时才会被调用

目录 一、问题 二、解决方法 三、总结 一、问题 1.需求:根据组件外部一个变量的值来确定 组件内部的操作。组件外部可以更改filetime的值,filetime有值时这个界面可以操作,否则不可以操作。 我一想 用computed就可以了呀,动态…

Rockwell EDI 850 采购订单报文详解

罗克韦尔(Rockwell)自动化(中国)有限公司(NYSE: ROK)是全球最大的致力于工业自动化与信息化的公司,致力于帮助客户提高生产力,以及世界可持续发展。罗克韦尔自动化总部位于美国威斯康星州密尔沃基市,在全球80多个国家设…

超级明星们的人物化身 NFT 将来到 The Sandbox 元宇宙

超级明星队 NFT 将在 The Sandbox 的全球运动村体验中亮相! ​ The Sandbox 与 Web3 公司 Forj 达成合作,还获得了独特的 BAYC 无聊猿人物化身的授权。 NFTSTAR 在 The Sandbox 建造了新的体验,巴西足球明星内马尔(Neymar JR.&am…

高项 质量管理论文

三个过程 项目质量管理包括执行组织确定质量政策、目标与职责的各过程和活动,从而使项目满足其预定的需求。项目质量管理在项目环境内使用政策和程序,实施组织的质量管理体系;并以执行组织的名义,适当支持持续的过程改进活动。项目…

【408专项篇】C语言笔记-第五章(一维数组与字符数组)

第五章:一维数组与字符数组 第一节:一维数组 1. 数组的定义 C语言提供的数组,通过一个符号来访问多个元素。 特点: 具有相同的数据类型。使用过程中需要保留原始数据。 数组是构造数据类型。所谓数组,是指一组具…

深入理解Python生成器和yield

深入理解Python生成器和yield 我在《Python性能优化指南–让你的Python代码快x3倍的秘诀》中有提到,在处理大文件或大数据集时用生成器可以提高性能。很多朋友会问:“为什么用生成器就能提升性能呢?”。今天,我就带大家深入看一…

Web2 vs. Web3,社交工具的发展会有什么变化?

社交,是不同主体传递、反馈社会信息的主要方式之一。从古代的飞鸽传书、近代的书信往来,到现代大家手机里都必不可少的社交 APP,人们对于社交的需求和实现方式都在不断更新和变化。 当前,Web2 社交赛道已经非常成熟。为吸引更多流…

前端文件流相关

XMLHttpRequest // XMLHttpRequest对象用于与服务器交互 // XMLHttpRequest可以在不刷新页面的情况下请求特定URL, 获取数据 // XMLHttpRequest属性responseType是一个枚举字符串值, 用于指定响应中包含的数据类型 // 如果将 responseType的值设置为空字符串, 则使用 text 作为…

Linux网络编程基础

Linux网络编程基础一、基础概念的介绍1.1 网卡的介绍1.2 mac地址 六个字节 48位1.3 ip地址 32位 四个字节 ipv41.4 端口二、网络模型2.1 OSI七层模型2.2 TCP/IP模型2.3 协议2.4 网络通信过程2.4 arp协议2.5 网络设计模式一、基础概念的介绍 1.1 网卡的介绍 1.2 mac地址 六个字…

开源轻量堡垒机——Teleport的安装配置和使用

一、堡垒机简介 1.1、现状 目前随着信息化的发展,越来越多的企业开始有更多的服务器、业务资源,有更多样化的员工,拥有更多的账号;导致访问混乱化,越权访问难以规范;甚至恶意命令攻击事件(如删…

【数据结构】带头节点双向循环链表

目录 顺序表和链表的区别 带头双向循环链表分析 带头双向循环链表结构: 创建一个节点 哨兵位头节点 打印链表中的值 在pos前插入 删除pos位置的节点 尾插 尾删 头插: 头删 链表元素查找 总代码 List.h文件 List.c文件 test.c文件 顺序表和…

科技云报道:历经四年,RPA走向同质化?

科技云报道原创。 经过多年发展,全球RPA市场已经初具规模。 据Transparency Market Research研究预测,预计到2024年,全球RPA市场规模将达到50亿美元,实现61.3%的年复合增长率。 RPA在亚洲市场起步晚于欧美市场,但从2…

SpringCloud系列(二)Ribbon 负载均衡的原理及详细流程

关于负载均衡这个概念在上一篇文章中有所提到,在消费者远程调用之前有一个重要的环节就是负载均衡,那么为什么要进行负载均衡呢?其原理及实现流程如何?   其实 Ribbon 负载均衡可以认为是一种策略,也可以说是某种规则…

SpringBoot+Vue项目实现身体健康诊疗系统

文末获取源码 开发语言:Java 使用框架:spring boot 前端技术:JavaScript、Vue.js 、css3 开发工具:IDEA/MyEclipse/Eclipse、Visual Studio Code 数据库:MySQL 5.7/8.0 数据库管理工具:phpstudy/Navicat JD…

ajax尚硅谷笔记——跨域请求、axios发送ajax请求、jquery发送ajax请求

去恶补了ajax知识 一、ajax简介 1、ajax全称为Asynchronous JavaScript And XML,就是异步的JS 和XML 2、通过AJAX可以再浏览器中向服务器发送异步请求,最大的优势:无刷新获取数据 3、ajax不是新的编程语言,而是一种将现有的标准…

《Linux内核设计与实现》读书笔记

《Linux内核设计与实现》读书笔记第三章 进程管理第四章 进程调度第五章 系统调用第六章 内核数据结构第七章 中断和中断处理第八章 下半部和推后执行的工作第九章 内核同步介绍第十章 内核同步方法第十一章 定时器和时间管理第十二章 内存管理第十三章 虚拟文件系统第十四章 块…

Java:2022年全球使用的15种最流行的Java应用

到今年为止,Java已经有25年的历史了,尽管引入了许多更新、更华丽的语言和工具,但它仍然是当今最流行的编程语言之一。这们老语言一直在蹒跚前行,享受着当今众多程序员和开发人员的爱。 Java有许多优势,再加上它的广泛使…

transformer论文及其变种

文章目录transformer模型细节slf-attn & multi-head attnabs positionwhy slf-attntransformer-XLInformer细节probSparse slf-attnLongformer细节GPT-generative pre-train模型结构下游任务:fine-tuningtransformer motivation:序列映射的任务&…

高速串行信号串接电容放在发送端还是接收端

在设计一些高速的串行信号,比如PCIE,STATA,USB3.0等,在差分信号线上面常常都会串接一个电容 这个电容主要有如下几个方面的作用: 1.滤除信号的直流分量,使信号关于0电平对称; 因为很多高速信号…