IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Kubernetes(k8s)---(1)集群部署 -> 正文阅读

[系统运维]Kubernetes(k8s)---(1)集群部署

目录

一、Kubernets简介

1.1 Kubernetes优点

1.2 Kubernetes架构设计

1.3 kubernete服务架构

二、Kubernetes部署

2.1 基本环境配置

?2.2 禁用swap分区

2.3 配置kubernetes的yum源,并安装组件

?2.4 设置kubernetes命令补全功能

2.5 初始化集群

2.6 master端配置kubectl

2.7 安装网络组件

2.8 节点的删除与恢复

三 、Kubectl命令


一、Kubernets简介

????????Kubernetes 是一个可移植的、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。 Kubernetes 拥有一个庞大且快速增长的生态系统。Kubernetes 的服务、支持和工具广泛可用。

????????Kubernetes对计算资源进行了更高层次的抽象,通过将容器进行细致的组合, 将最终的应用服务交给用户。

1.1 Kubernetes优点

????????? 隐藏资源管理和错误处理,用户仅需要关注应用的开发。
????????? 服务高可用、高可靠。
????????? 可将负载运行在由成千上万的机器联合而成的集群中

1.2 Kubernetes架构设计

????????Kubernetes集群包含代理节点kubelet和master组件(API、scheduler、etc),但都是基于分布式存储系统。

图 1kubernetes的架构

?

????????核心组件:etcd、apiserver、controller manager、scheduler、kubelet、container runtime、kube-proxy。

????????? etcd:保存了整个集群的状态
????????? apiserver:提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制
????????? controller manager:负责维护集群的状态,比如故障检测、自动扩展、滚动更新等
????????? scheduler:负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上
????????? kubelet:负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理
????????? Container runtime:负责镜像管理以及Pod和容器的真正运行(CRI)
????????? kube-proxy:负责为Service提供cluster内部的服务发现和负载均衡


其他推荐添加的add-ones:

????????? kube-dns:负责为整个集群提供DNS服务
????????? Ingress Controller:为服务提供外网入口 ? Heapster:提供资源监控
????????? Dashboard:提供GUI ? Federation:提供跨可用区的集群 ? Fluentd-elasticsearch:提供集群日志采集、存储与查询

1.3 kubernete服务架构

????????与Linux相同,采用分层式的微架构服务

图 2 kubernetes的层次结构

????????? 核心层:Kubernetes最核心的功能,对外提供API构建高层的应用,对内提供插件式应用执行环境
????????? 应用层:部署(无状态应用、有状态应用、批处理任务、集群应用等)和路由(服 务发现、DNS解析等)
????????? 管理层:系统度量(如基础设施、容器和网络的度量),自动化(如自动扩展、动 态Provision等)以及策略管理(RBAC、Quota、PSP、NetworkPolicy等)
????????? 接口层:kubectl命令行工具、客户端SDK以及集群联邦
????????? 生态系统:在接口层之上的庞大容器集群管理调度的生态系统,可以划分为两个范畴

????????? Kubernetes外部:日志、监控、配置管理、CI、CD、Workflow、FaaS、 OTS应用、ChatOps等
????????? Kubernetes内部:CRI、CNI、CVI、镜像仓库、Cloud Provider、集群自身的配置和管理等

?更多资料可查看:Kubernetes 是什么? | Kubernetes


二、Kubernetes部署

????????官方部署文档:https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/

2.1 基本环境配置:

????????? 基于redhat7.6的3台基础服务--server1(master) server2 server3

????????? 所有主机均关闭节点的selinux和iptables防火墙

????????? 所有节点部署docker引擎、设置k8s的网络配置、重启服务

##yum仓库提前配置好,配置文件可以根据docker在编写时进行配置,或者参考aliyu.com即可配置完成

##安装docker 
[root@server1 ~]# yum install -y docker-ce docker-cli

##编写k8s的配置文件
[root@server1 ~]# vim /etc/sysctl.d/k8s.conf

####内容#####
net.bridge.bridge-nf-call-ip6tables = 1 
net.bridge.bridge-nf-call-iptables = 1 

##服务重载
[root@server1 ~]# sysctl --system

##重新配置docker引擎
[root@server1 ~]# vim /etc/docker/daemon.json

####内容####
{  
  "exec-opts": ["native.cgroupdriver=systemd"],  
  "log-driver": "json-file",  
  "log-opts": {    
    "max-size": "100m"  
  },  
  "storage-driver": "overlay2",  
  "storage-opts": [    
    "overlay2.override_kernel_check=true"  
  ] 
}

##设置docker服务开启自启
[root@server1 ~]# systemctl enable docker --now
图3 设置网关

?

图 4 设置docker驱动

?2.2 禁用swap分区

##所有节点禁用swap分区
[root@server1 ~]# swapoff -a

##禁用/etc/fstab文件中的swap定义 
[root@server1 ~]# vim /etc/fstab 
[root@server1 ~]# tail -1 /etc/fstab 
#UUID=2a714265-f92d-4429-87da-9f09e32e6ff2 swap                    swap    defaults        0 0
图 5 设置swap禁用

?

2.3 配置kubernetes的yum源,并安装组件

###kubernetes的yum源:
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/#configure-cgroup-driver-used-by-kubelet-on-control-plane-node

##编写配置文件
[root@server1 ~]# vim /etc/yum.repos.d/kubernetes.repo

####文件内容####
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0

###安装kubelet kubeadm kubectl
[root@server1 ~]# yum install -y kubelet kubeadm kubectl

##设置开机自启
[root@server1 ~]# systemctl enable --now kubelet

##查看默认配置基础信息
[root@server1 ~]# kubeadm config print init-defaults

##列出所需镜像
[root@server1 ~]# kubeadm config images list --image-repository registry.aliyuncs.com/google_containers

##拉去相应的镜像
[root@server1 ~]# kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers

##查看获取的镜像
[root@server1 ~]# docker images

##非控制节点只需要获取一下三个镜像即可 
google_containers/kube-proxy、google_containers/coredns、google_containers/pause 

##相应的image进行打包-->传送给server2和server3-->解压上传给docker image

[root@server1 ~]# docker save registry.aliyuncs.com/google_containers/kube-proxy registry.aliyuncs.com/google_containers/coredns registry.aliyuncs.com/google_containers/pause  > node.tar

[root@server2 ~]# docker load -i node.tar
[root@server2 ~]# docker load -i node.tar
图 6 开启kubelet.service

?

图 7 查看所需要的images

?

?

图 8 下载相应的iamges

?2.4 设置kubernetes命令补全功能

##kubernetes命令补全
[root@server1 ~]# echo "source <(kubectl completion bash)" >> ~/.bashrc
[root@server1 ~]# source .bashrc
图 9 设置命令行补全

2.5 初始化集群

##在管理端初始化集群

[root@server1 ~]# kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository registry.aliyuncs.com/google_containers

                 --pod-network-cidr=10.244.0.0/16 ##使用flannel网络组件时必须添加
                 --kubernetes-version //指定k8s安装版本
##重新设置
[root@server1 ~]# kubeadm reset

注意:token有时效24h,超过时需要生成新的token

生成新的token:
kubeadm token create

查看新的哈希码:
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | \ openssl dgst -sha256 -hex | sed 's/^.* //'

图 10 初始化服务
图 11 查看相应的添加集群的方式

2.6 master端配置kubectl

##添加kubeadm用户,并设置相应权限
[root@server1 ~]# useradd kubeadm
[root@server1 ~]# vim /etc/sudoers

####设置的kubeadm权限####
kubeadm    ALL =(ALL)    NOPASSWD:ALL

##创建配置文件-->编写配置文件-->设置文件权限
[root@server1 ~]# vim /etc/sudoers

[root@server1 ~]# su - kubeadm
[kubeadm@server1 ~]$ mkdir -p $HOME/.kube
[kubeadm@server1 ~]$ cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
cp: cannot open ‘/etc/kubernetes/admin.conf’ for reading: Permission denied
[kubeadm@server1 ~]$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[kubeadm@server1 ~]$ sudo chown $(id -u):$(id -g) $HOME/.kube/config

##root用户只需要执行
[kubeadm@server1 ~]$ vim ~/.bash_profile
[kubeadm@server1 ~]$ export KUBECONFIG=/etc/kubernetes/admin.conf

##查看集群节点
[kubeadm@server1 .kube]$ kubectl get node

图 12 创建普通用户

?

图 13 设置普通用户的权限

?

图 14 查看所拥有的节点

2.7 安装网络组件

###从网络下载配置文件
[root@server1 ~]# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

            master要配置及部署文件kube-fannel.ym,所有节点都要配置仓库的地址解析,及flannel软件组

##查看组件状态  必须所有组件running
[root@server1 ~]# kubectl get pod --all-namespaces


##其他网络安装
https://kubernetes.io/zh/docs/concepts/cluster-administration/addons/
图 15 配置flannel网络组件

?

图 16 查看配置的网络节点

?

图 17 查看网络运行的基本信息

?

2.8 节点的删除与恢复

##在master端删除节点
[root@server1 ~]# kubectl drain server3 --delete-local-data --force --ignore-daemonsets
[root@server1 ~]# kubectl delete node server3

##非正常节点
[root@server1 ~]# kubeadm reset

三 、Kubectl命令

操作手册:https://kubernetes.io/docs/reference/generated/kubectl/kubectlcommands

kubectl get cs
kubectl get node
kubectl get pod -n kube-system
kubectl get pod -o wide -n kube-system
图 18 基础命令的应用

?

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-03-04 16:00:29  更:2022-03-04 16:02:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 4:49:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码