kubernetes运用
1:kubernetes基本介绍
kubernetes 是一个开源的容器集群管理系统,K8s用于容器化应用程序的部署 扩展和管理,提供容器编排 资源调度 弹性伸缩 部署管理 服务发现等一系列功能。
kebernetes的特性
@自我修复 在节点故障的时候重新启动失败的容器,保证预期的副本数量,杀死监控检查失败的容器,并且在未准备好之前,不会处理客户端的请求,保证线上服务不会中断。
@弹性伸缩 使用命令 UI或者基于CPU的使用情况快速扩容和收缩应用程序实例,保证应用业务在高峰器并发的高可用性,业务低峰期收回资源,以最小成本应用资源。
@自动部署和回滚 k8s为各个容器提供统一访问的入口(内部IP地址和一个DNS名称)并且负载均衡关联的所有容器,使的用户无需考虑容器IP问题。
@机密和配置管理 管理机密数据和应用程序配置,而不需要把敏感数据暴露在镜像中,提高敏感数据安全性。并可以将一些存储在K8s上,方便应用程序使用。
@存储编排, 挂载外部存储系统,无论俩只本地存储,公有云还是网络存储都作为集群资源的一部分使用,极大提高存储使用灵活性。
@批处理 提供一次性任务 定时任务;满足批量数据处理和分析的场景。
kubernetes集群架构与组件
MASTER 组件
kube-apiserver 集群的统一入口,各个组件协调者,以restful API 提供接口服务,所有对象资源的增删改查和监听工作都交给apiserver处理后提交给etcd存储
kube-controller-manager 处理集群中常规后台任务,一个资源对应一个控制器,而controllermanager 就是负责管理这些控制器的
kube-scheduler 根据调度算法为新创建的POD选择一个node节点,可以任意部署,可以部署在同一个节点上,也可以部署在不同的节点上。
etcd 分布式键值存储系统,用于博爱u才能集群状态数据,比如pod server 等对象信息。
node组件
kubelet 是master 在node节点上的agent 管理本机运行容器的生命周期,比如创建容器,pod 挂载数据卷,下载 secret 获取容器和节点状态等工作,kubelet将每个pod转换成一组容器。
kube-proxy 在node节点上实现pod网络代理,维护网络规则和四层负载均衡工作
docker或rocket 容器引擎 运行容器
2:kubernetes核心概念
pod 最小部署单元 一组容器的集合 一个POD中的容器共享网络命名空间 pod是短暂的。
controllers replicaset: 确保预期的pod副本数量
deployment 无状态应用部署
statefulset: 有状态应用部署
daemonset:确保所有的node运行同一个pod
job: 一次性任务
cronjob:定时任务
service 防止pod失联
定义一组pod的访问策略
label 标签,附加到某个资源上,用于关联对象 查询和筛选
namespace:命名空间,将对象逻辑上分开
3:kubernetes的部署
1:环境准备
192.168.88.20 master
192.168.88.21 node1
192.168.88.22 node2
hostname master && hostnamectl set-hostname master
hostname node1 && hostnamectl set-hostname node1
hostname node2 && hostnamectl set-hostname node2
2:关闭防火墙和selinux 交换分区
systemctl stop firewalld && systemctl disable firewalld
setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/config
swapoff -a
sed -i '/swap/d' /etc/fstab
3:修改hosts文件
echo "192.168.88.20 master
192.168.88.21 node1
192.168.88.22 node2" >> /etc/hosts
4:同步时间(正式环境不用执行该命令)
yum install ntpdate -y
ntpdate time.windows.com
5:设置DNS
echo "nameserver 192.168.88.2" > /etc/resolv.conf
systemctl restart network
6:创建/etc/sysctl.d/k8s.conf
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
sysctl --system
6:安装docker
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum -y install docker-ce-18.06.1.ce-3.el7
systemctl start docker && systemctl enable docker
docker --version
#7:配置kubernetes阿里云镜像
#echo "[kubernetes]
#name=Kubernetes
#baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
#enabled=1
#pgcheck=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" > /etc/yum.repos.d/kubernetes.repo
8:添加阿里云YUM软件源
cat << EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=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
EOF
8:安装kubeadm kubelet kubectl
yum install -y kubelet-1.15.0 kubeadm-1.15.0 kubectl-1.15.0
systemctl enable kubelet && systemctl start kubelet
#配置kubelet
#echo "KUBELET_ EXTRA_ ARGS="--fail-swap-on=false" > /etc/sysconfig/kubelet
#systemctl restart kubelet.service && systemctl enable kubelet.service
***********************************************前面的命令需要在master和node节点都要执行*****************************
9:安装master节点
kubeadm init --kubernetes-version=1.15.0 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.88.20 \
--image-repository registry.aliyuncs.com/google_containers \
--service-cidr=10.1.0.0/16 (国内执行这个)
kubeadm init --kubernetes-version=1.15.0 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.88.20 (国外执行这条命令)
###以上命令根据情况选择其中一条进行执行即可
成功后会生成node节点加入集群的命令(node节点执行该命令)
kubeadm join 192.168.88.20:6443 --token p39oez.dx47m0rpocixulf9 \
--discovery-token-ca-cert-hash sha256:3176b7ee2810f28c810d27c9f55be52e5845302fc91f4ee026af2b8a9a34fdb1
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
10:安装pod网络插件
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
11:查看k8s的节点情况(在主节点上)
kubectl get cs
kubectl get nodes
kubectl get pods -n kube-system
以上部署表示单个主master节点集群安装部署好
3:安装kubernetes dashboard
kubernetes运用的更多相关文章
- [笔记]kubernetes 无法启动问题
在启动kubernetes的时候报错误. ERROR: timed out for http://localhost:4001/v2/keys/ 原因是无法启动etcd, etcd 监听4001本地端 ...
- 基于Kubernetes在AWS上部署Kafka时遇到的一些问题
作者:Jack47 转载请保留作者和原文出处 欢迎关注我的微信公众账号程序员杰克,两边的文章会同步,也可以添加我的RSS订阅源. 交代一下背景:我们的后台系统是一套使用Kafka消息队列的数据处理管线 ...
- 基于Python+Django的Kubernetes集群管理平台
➠更多技术干货请戳:听云博客 时至今日,接触kubernetes也有一段时间了,而我们的大部分业务也已经稳定地运行在不同规模的kubernetes集群上,不得不说,无论是从应用部署.迭代,还是从资源调 ...
- Docker中部署Kubernetes
Kubernetes为Google开源的容器管理框架,提供了Docker容器的夸主机.集群管理.容器部署.高可用.弹性伸缩等一系列功能:Kubernetes的设计目标包括使容器集群任意时刻都处于用户期 ...
- kubernetes部署Fluentd+Elasticsearch+kibana 日志收集系统
一.介绍 1. Fluentd 是一个开源收集事件和日志系统,用与各node节点日志数据的收集.处理等等.详细介绍移步-->官方地址:http://fluentd.org/ 2. Elastic ...
- kubernetes 文档
kubernetes 官方文档:http://kubernetes.io/docs/ null
- kubernetes 1.4.5集群部署
2016/11/16 23:39:58 环境: centos7 [fu@centos server]$ uname -a Linux centos 3.10.0-327.el7.x86_64 #1 S ...
- kubernetes单机板
参考地址: *** http://blog.csdn.net/carter115/article/details/51121223 ** http://www.cnblogs.com/dongdong ...
- 一次kubernetes资源文件创建失败的排查
今天在jenkins中创建kubernetes的rc时,检查目标yaml文件时报出如下错误: + /opt/jenkins/kube/kubectl -s http://10.xx.xx.xx:808 ...
- kubernetes&tensorflow
谷歌内部--Borg Google Brain跑在数十万台机器上 谷歌电商商品分类深度学习模型跑在1000+台机器上 谷歌外部--Kubernetes(https://github.com/kuber ...
随机推荐
- C#4.0中的协变和逆变
原文地址 谈谈.Net中的协变和逆变 关于协变和逆变要从面向对象继承说起.继承关系是指子类和父类之间的关系:子类从父类继承所以子类的实例也就是父类的实例.比如说Animal是父类,Dog是从Anima ...
- 语言模型评价指标Perplexity
在信息论中,perplexity(困惑度)用来度量一个概率分布或概率模型预测样本的好坏程度.它也可以用来比较两个概率分布或概率模型.(应该是比较两者在预测样本上的优劣)低困惑度的概率分布模型或概率模型 ...
- Python globals()和locals()比较
Python的两个内置函数,globals()和locals() ,它们提供了基于字典的访问局部和全局变量的方式. globals()是可写的,即,可修改该字典中的键值,可新增和删除键值对. 而loc ...
- 不同浏览器之间的javascript和css兼容性问题
po主手头维护的网站是上世纪的作品.当时约摸ie所占的市场份额相当大,以至于开发人员都没有考虑到浏览器兼容性问题(这不科学!).怎奈po主是个强迫症阿.最近在修改的时候,还是没忍住,把兼容性问题解决了 ...
- 2. zookeeper介绍及集群搭建
ZooKeeper 概述 Zookeeper 是一个分布式协调服务的开源框架. 主要用来解决分布式集群中 应用系统的一致性问题,例如怎样避免同时操作同一数据造成脏读的问题. ZooKeeper 本质上 ...
- md5sum、tailf命令
一.md5sum:计算和校验文件的md5值 语法 md5sum [选项] ... [文件] ... 描述 打印或检查MD5(128位)校验和.没有FILE或FILE为 ...
- (转载)sublime3安装markdown插件
原文链接 http://www.jianshu.com/p/335b7d1be39e?utm_source=tuicool&utm_medium=referral 最近升级到了 Sublime ...
- luogu P3620 [APIO/CTSC 2007]数据备份
luogu 首先如果一条线不是了连接的相邻两个位置一定不优,把它拆成若干连接相邻位置的线.所以现在问题是有\(n\)个物品,选\(k\)个,要求选的位置不能相邻,求最小总和 如果没有选的位置不能相邻这 ...
- 浅析HBase:为高效的可扩展大规模分布式系统而生
什么是HBase Apache HBase是运行在Hadoop集群上的数据库.为了实现更好的可扩展性(scalability),HBase放松了对ACID(数据库的原子性,一致性,隔离性和持久性)的要 ...
- 搭建私有CA并基于OpenSSL实现双向身份认证
0x00 前言 互联网上的Web应用由于用户数目广泛,都是采用单向身份认证的,只需要客户端验证服务端的身份.但如果是企业内部的应用对接,客户端数量有限,可能就会要求对客户端也做身份验证,这时就需要一个 ...