Kubernetes-互联网分布式

1、kubernetes k8个字母s 简称k8s cncf 云原声计算基金会

  • 简介 k8s
    • www.kubernetes.io go语言
  • k8s整体结构
    • master nodes 至少两个server
    • master node 由API Server、Scheduler、ClusterState Store(ETCD 数据库) 和controller MangerServer所组成
    • nodes
      • 集群工作节点,运行用户业务应用容器:
      • nodes 节点也较WorkerNode 包含 kubelet、kube proxy 和 pod(Container Runtime);

2、Kubernetes 环境搭建方式

  • 部署Kebernetes环境主要有多种方式
    • minikube
      • minikube 可以在本地运行Kubernetes的工具,minikube可以在个人计算机上运行一个但节点kubernetes集群,以便可以试用Kubernetes或进行日常开发工作;
      • kuberneres.io/docs/tudotials/hello-minikube/
    • kind
      • kind.slgs.k8s.io
    • kubeadm
      • kubeadm 是一个k8s 部署工具,提供kubeadm init 和kubeadm join两个操作命令,可以快速部署一个Kubernetes集群
    • 二进制包
    • yum安装
      +yum 安装Kubernetes的每个组件
    • 第三方工具
    • 花钱购买
      • 阿里云 共有云平台
  • kubeadm 部署 Kubernetes
    • kubeadm 是官方社区推荐的一个用于快速部署kubernetes集群的工具,这个工具能通过两条指令完成一个kubernetes集群的部署
    • 1、创建一个Master节点
      • kubeadm init
    • 2、将Node节点加入到Master集群中:
      • kubeadm join <Master节点的ip和端口>
  • kuberneters部署环境要求
    • 一台或多台机器、操作系统CentOs7x-86-x64
    • 硬件配置:内存2GB或者 2G+,CPU 2核或CPU2核+;
    • 集群内各个机器之间能互相通信
    • 集群内各个机器可以访问外网、需要拉取镜像
    • 禁止swap分区
    • 如果环境不满足要求、会报错,比如:
  • kubernetes部署环境准备
    • 关闭防火墙
      • systemctl stop firewalld
      • systemctl disable firewalld
    • 关闭 selinux
      • sed -i 's/enforcing/disabled/' /etc/selinux/config #永久
      • setenforce 0 # 临时
    • 关闭 swap (k8s禁止虚拟内存以提升性能)
      • swapoff -a #临时
      • sed -ri 's/.swap./#&/' /etc/fstab #永久
    • 在master 添加hosts
      • cat>> /etc/hosts <<EOF
      • 192.168.172.131 k8smaster
      • 192.168.172.132 k8snode
      • EOF
    • 设置网桥参数
      • cat> /etc/sysctl.d/k8s.conf<<EOF
      • net.bridge.bridge-nf-call-ip6tables=1
      • net.bridge.bridge-nf-call-iptables=1
      • EOF
      • sysctl --system #生效
    • 时间同步
      • yum install ntpdate -y
      • ntpdate time.windows.com
  • Kubernetes 安装具体步骤
    • 所与服务器节点安装 Docker/kubeadm/kubelet
    • Kubernetes 默认容器运行环境是Docker,因此首先需要安装docker;
      • 1、安装docker
      • 2、安装制定版本的docker:
        • yum install docker-ce-19.03.13 -y
      • 3、配置加速器
        • /etc/docker/daemon.json
        • {
          "registry-mirrors":["https://registry.docker-cn.com"]
          } 然后执行 systemctl enable docker.service,不然会提示警告
      • 4、添加k8s的阿里云yum源
        cat> /etc/yum.repos.d/kubernetes.repo <<EOF
        [kubernetes]
        name =Kubernetes
        baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
        enalbed=1
        gpgcheck=0
        repo_gpgcheck=0
        gpgkey=https://morrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
        https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
        EOF
      • 5、安装kubeadm、kubelet、kubectl
        • yum install kubelet-1.19.4 kubeadm-1.19.4 kubectl-1.19.4 -y
        • 然后执行 systemctl enable kubelet.service 不然会提示警告
      • 6、查看有没有安装:
        • yum list installed|grep kubelet
        • yum list installed|grep kubeadm
        • yum list installed|grep kubectl
      • 7、查看版本号:
        • kubelet --versionn 运行在cluster所有节点上,负责启动pod和容器;
        • kubeadm:用于初始化cluster;
          +kubectl:kubectl是kubenetes命令行工具,通过kubectl可以部署和管理运用,查看各种资源,创建,删除和更新组件
      • 8、初始化Kubernetes Master主节点
        • kubeadm init --apiserver-advertise-address=192.168.172.131 --image-repository registry.aliyuncs.com/google_containers --kubernetes--version v1.19.4 --service-cidr-10.96.0.0/12 --pod-network-cidr=10.244.0.0/16
        • 说明:service-cidr 的选取不能和podcidr即本级网络有重叠或者冲突,一般可以选择一个本机网络和podcidr都没有用到的私网地质段,比如podcidr使用 10.244.0.0/16,那么service cidr 可以选择10.96.0.0/12,网络无重叠冲突即可,上述与运行在Master机器上
        • 接下来Master执行:
          • mkdir -n $HOME ./kube
          • sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
          • sudo chown $(id-u)😒(id-g) $HOME/.kube/config
          • kubectl get nodes
        • 接下来加入kubernetesNode,在workNode上执行, 向集群添加新节点,执行在kubeadm init 最后输出的kubeadm join命令:
      • 9、向集群中添加新节点,执行在kubeadm init 最后输出的kubeadm join命令:
      • 10、wget https://raw.githubusercontent.com/coreos/fiannel/master/Documentation/kube-flannel.yml
      • 11、应用kube-flannel.yml文件得到运行时容器 上传文件上传 yum install lrzsz -y
        • kubectl apply -f kube-flannel.yml
      • 12、查看容器运行时pod状态
        • kubectl get pods -n kube-system
        • kubectl get nodes(查看节点状态)
  • kubernetes 部署容器化应用
    • kubernetes 集群中部署一个Nginx:
      • kubectl create deployment nginx --image=nginx
      • kubectl expose deployment nginx --port=80 --type=NodePort
      • kubectl get pod,svc
      • kubectl get deployment()
      • kubectl get pod(s)
        • kubectl get service(s)
          • kubectl get node(s) 查看节点
          • kubectl --help
          • 删除nginx控制器
            • kubectl delete deployment nginx
            • kubectl --help
          • 访问地址:http://NodelP:Port
          • 顺序 docker--> pod -> deploy -> service-->node
        • Kubernetes 集群中部署一个Tomcat:
          • kubectl create deployment tomcat --image=tomcat
          • kubectl expose deployment tomcat --port=8080 --type=NodePort
          • 访问地址:http://NodelP:Port
        • Kubernetes 集群中部署SpringBoot应用
          • 项目打包(war、jar)-->可以使用一些工具 git、maven、jenkins
          • 制作Dockerfile文件,生成镜像;
          • kubectl create deployment your-springboot --image=你的镜像
          • 你的springboot就部署好了,是以docker容器的方式运行在pod中
        • 自定义jdk镜像
          • FROM centos:latest
          • MAINTAINER 作者
          • ADD jdk-8u251-linux-x64.tar.gz /usr/local/java
          • ENV JAVA_HOME /usr/local/java/jdk1.8.0_251
          • ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
          • ENV PATH $PATH:$JAVA_HOME/lib
          • CMD JAVA -version
          • 构建镜像: docker build -t jdk1.8.0_251 .
          • 运行镜像: docker run -d (镜像id)
        • 构建项目镜像
          • dockerfile文件编写
            • FROM jdk1.8.0_251
            • MAINTAINER 作者
            • ADD 38-springboot-k8s-1.0.0.jar /opt
            • RUN chmod +x /opt/38-springboot-k8s-1.0.0.jar
            • CMD java -jar /opt/38-springboot-k8s-1.0.0.jar
          • 构建镜像:docker build -t 38-springboot-k8s-1.0.0-jar .
          • k8s部署运行测试(两种方法):
            • 空运行测试
              • 1、kubectl create deployment 38-springboot-k8s --image=38-springboot-k8s-1.0.0-jar --dry-run -o yaml
              • 2、1、kubectl create deployment 38-springboot-k8s --image=38-springboot-k8s-1.0.0-jar --dry-run -o yaml >deploy.yaml
            • Yml文件方式部署
            • kubectl apply -f deploy.yaml
              +等价于 kubectl create deployment 38-springboot-k8s --image=38-springboot-k8s-1.0.0-jar
            • kubectl get pods
          • 暴露服务端口
            • kubectl create deployment springboot-k8s --port=8080 --type=NodePort
          • 查看pod 日志
            • kubectl logs 38-springboot-k8s-5757(pod名)
        • 部署kuberneres Dashbaord
posted @ 2021-10-22 09:46  紫色水杯  阅读(82)  评论(0)    收藏  举报