kubernetes之旅

k8s 架构
 官方网站: https://kubernetes.io/
 
0
核心组件
  • ETCD 分布式高性能键值数据库,存储整个集群的所有元数据
  • Apiserver 集群的资源访问控制入口,提供restAPI 和安全访问控制
  • scheduler: 调度器,负责将业务pod调度到合适的节点上
  • controller manager : 控制器,确保集群 按照期望方式运行
  • kubelet:运行在每个节点上主要是节点代理
    • pod管理:kubelet 定期从所监听的数据源获取节点上pod的期望状态(运行的什么容器,运行的副本数,网络存储是如何配置的),并调用对应的容器平台接口达到这个状态
    • pod健康检查:kubelet创建容器之后还要查看容器状态是否正常运行,如果容器运行状态错误,根据pod设置的重启策略进行处理
    • 容器监控:kubelet会监控pod所在节点的资源使用情况,并向master报告,知道整个集群的所有节点的资源使用情况,对于pod的调度和正常运行都至关重要
  • kubectl : 命令行工具对集群进行命令管理
  • CNI 通用网络接口我们这里使用flannel插件作为集群的网络插件实现跨节点通信
0
 
0
 
集群安装部署
 
0
master ip本次为192.168.255.130 node1 节点 192.168.255.131 node2 节点192.168.255.132
0
安装前准备
1 修改主机名,并添加hosts解析
设置iptables
  #iptables -P FORWARD ACCEPT
关闭swap
  #swapoff -a
防止开机自动挂载swap
  #sed -i '/swap/s/^(.*)$/#\1/g' /etc/fstab
关闭selinux 和防火墙
  #sed -ri 's#(SELINUX=).*#\1disabled#' /etc/selinux/config
  #setenforce 0
  #systemctl disable firewalld && systemctl stop firewalld
修改内核参数
  #cat << EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward=1
vm.max_map_count=262144
EOF
#modprobe br_netfilter
#sysctl -p /etc/sysctl.d/k8s.conf
yum 源配置
  #curl -o /etc/yum.repos.d/Centos-7.repo http://mirrors.aliyun.com/repo/Centos-7.repo
  #curl -o /etc/yum.repos.d/docker-ce.repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  #cat << EOF > /etc/yum.repos.d/kuberbetes.repo
[kubernetes]
name=kubernetes
enabled=1
gpgcheck=0
repo_gpgcheck=0
EOF
安装docker
查看docker 历史版本
  #yum list docker-ce --showduplicates |sort -r
  #yum install docker-ce -y 安装最新版本  注意这里dcoker版本要与后面kubeadm兼容
配置docker 加速器
#mkdir /etc/docker
#vim /etc/docker/daemon.json
{
"registry-mirrors": [
]
}
#systemctl daemon-reload
#systemctl enable docker
#systemctl start docker
部署kuberbnetes 集群
1 安装kubeadm , kubelet kubectl 所有节点上
  #yum install kubelet-1.16.2 kubeadm-1.16.2 kubectl-1.16.2 --disableexcludes=kuberbetes -y
查看kubeadm版本
  #kubeadm version
设置kubelet开机自启
  #systemctl enable kubelet
  #systemctl start kubelet
在master 执行获取初始化配置,然后修改配置
  #kubeadm config print init-defaults > kubeadm.yaml
复制代码
apiVersion: kubeadm.k8s.io/v1beta2
bootstrapTokens:
groups:
system:bootstrappers:kubeadm:default-node-token
signing
authentication
effect: NoSchedule
---
apiServer:
timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns:
type: CoreDNS
etcd:
local:
dataDir: /var/lib/etcd
imageRepository: registry.aliyuncs.com/google_containers #修改为阿里云的仓库 或k8s.gcr.io
kind: ClusterConfiguration
kubernetesVersion: v1.16.0
networking:
dnsDomain: cluster.local
podSubnet: 10.244.0.0/16 # pod 网段 flannel插件需要用到这个网段
serviceSubnet: 10.96.0.0/12
scheduler: {}
复制代码
查看镜像列表:
#kubeadm config images list --config kubeadm.yam 显示将拉取的镜像
#kubeadm config images pull --config kubeadm.yaml 提前pull 到本地
如果 源不可用可以尝试dockerhub拉取
0
在master节点上做初始化安装操作
  #kubeadm init --config kubeadm.yaml
注意docker 与kbeadm 版本要兼容:
yum install docker-ce-cli-18.09.9-3.el7 docker-ce-18.09.9-3.el7 -y
0
 状态是notready 因为环没有安装网络插件
0
安装flannel插件
拉取flannel插件镜像
 
 
posted @   huxl1  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
历史上的今天:
2021-12-29 for 循环
点击右上角即可分享
微信分享提示