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

最新文章

  1. (转)基于OWIN WebAPI 使用OAuth授权服务【客户端模式(Client Credentials Grant)】
  2. 你应该了解的5个JavaScript调试技巧
  3. C#的简单的Windows Service 创建与安装
  4. linux 编译java并打包
  5. 一般处理程序+htm C#l简单的增删查改
  6. 利用反射机制设计Dao
  7. GIT的初级使用
  8. 开发更健壮python程序的一些工具
  9. CSU 1684-Disastrous Downtime
  10. sync—WaitGroup
  11. QQ聊天字体选择
  12. Spark/Storm/Flink
  13. bzoj千题计划211:bzoj1996: [Hnoi2010]chorus 合唱队
  14. Orchard之生成新模板
  15. [翻译] NSDate-TimeAgo
  16. apache 监控
  17. java 内省(Introspector)
  18. IOC疑惑
  19. CTreeCtrl 控件实现多选并取得选中项
  20. 【Loadrunner】性能测试:通过服务器日志获取性能需求

热门文章

  1. JDK下bin文件夹常见几个可执行文件
  2. Linux动态链接之GOT与PLT
  3. 【转贴】Debian 10 &quot;buster&quot; 正式发布
  4. # 「银联初赛第一场」自学图论的码队弟弟(dfs找环+巧解n个二元一次方程)
  5. # 组合数学-组合数+lacus定理
  6. 图灵机器人API调用 C++版
  7. python_0基础开始_day06
  8. webAapi
  9. O009、KVM 网络虚拟化基础
  10. scrapydWeb安装和使用