Kubernetes介绍和部署,使用

这篇具有很好参考价值的文章主要介绍了Kubernetes介绍和部署,使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.k8s kubernetes来自希腊语舵手,google, 8是ubernete

1.管理docker容器 go写的(并发)
2.用于微服务
3.cncf云原生基金会

2.mater(管理节点)和nodes(微服务节点)

3.部署

1.minikube kind官网在线测试语句
2.kubeadm(官方)(安装比较方便 添加)
3.github下载二进制包
4.yum(老)
5.大神封装的环境
6.买云服务商提供的 阿里云

4.kubeadm

  1. cent7 2g2core
  2. interact network between two nodes(download flannel.yum file connect network)
  3. forbid swap areas ,firework
  4. xshell 查看—>撰写–>send cmd at the same time
  5. kubelet(manage POD and container,in every node of cluster )
    kubeadm(init cluster)
    kubectl(client can connect it )

5.蓝绿发布 预发布(nginx 摘一台机器发布,其他其它的可以正常运行,然后再摘除运行)

6.!!!牛 linux插件直接上传选择的文件

 yum install lrzsz -y  
 rz   #upload file
 sz  #download file

7.部署过程

1.关闭防火墙和selinux和swap(k8s为了提供性能关闭虚拟内存) mater和nodes同时配置

         systemctl stop firewalld
         systemctl disable firewalld
         sed -i 's/enforcing/disabled/' /etc/selinux/config  #永久
setenforce 0  #临时close swap
          sed -ri 's/.*swap.*/#&/' /etc/fstab #永久
swapoff -a #临时
        //改host文件方便访问
    cat >> /etc/hosts << EOF
	192.168.192.100 k8smaster
	192.168.172.101 k8snode
	EOF
             //改k8s,让网络生效配置文件
              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

2.安装docker19 mater和nodes同时配置

         yum install wget -y
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
         yum install docker-ce-19.03.13 -y
       //改docker加速配置
      vim /etc/docker/daemon.json
     {
"registry-mirrors": ["https://gg3gwnry.mirror.aliyuncs.com"]
}

    //启动服务
    systemctl enable docker.service
    //k8s阿里源
 cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
   //安装
   yum install kubelet-1.19.4 kubeadm-1.19.4 kubectl-1.19.4 -y
   //启动服务
   systemctl enable kubelet.service
   //查看服务和版本
     yum list installed | grep kubelet
yum list installed | grep kubeadm
yum list installed | grep kubectl
    kubelet --version

3.master节点执行init命令 会生成join命令

  kubeadm init --apiserver-advertise-address=192.168.172.134 --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

4.master复制配置文件

   mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
 //得到节点
kubectl get nodes

5.join命令如果被重复执行,必须删除节点重启node节点

       //master生成命令,给node执行join,node不用init
//!!! 主节点的 /etc/kubernetes/admin.conf 一定要复制到node 不然not connection
//坑hostname作为k8s的简单名,不能重复 ,用nmtui修改
//坑 删除“$HOME/.kube/config”文件并执行kubeadm reset命令方可解除 ,(出现各种配置文件和端口占用)
   //!!!
  //查看master init生成的join命令
 kubeadm token create --print-join-command 
  //删除节点
    kubectl drain node1 --delete-local-data --force --ignore-daemonsets
  kubectl delete nodes node1
   //重新加入节点
//disabled_plugins = []

   //必须重启节点
   kubeadm reset
systemctl stop kubelet
systemctl stop docker
rm -rf /var/lib/cni/
rm -rf /var/lib/kubelet/*
rm -rf /etc/cni/
systemctl start docker
systemctl start kubelet

6.从节点执行master生成的join命令

   kubeadm join 192.168.172.132:6443 --token wa5bif.zfuvbesevdfvf4of \
--discovery-token-ca-cert-hash sha256:87cf5828d54dd80da13c4b57c57360370ea0267a7cc3991989ca3006cf3e44d8 

7.节点状态都是notready(坑,节点重启也要重新提交网络)(可以打通master和node内部访问的端口),要在master配置网络(其实都可以,apply上去就好了)
(重启只要主节点还在,就会重新部署从节点的pod)

   wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    kubectl apply -f kube-flannel.yml
    //等待片刻...,发现pod flannel
    kubectl get nodes
     

8.pod 一个可运行1/多个docker容器

9.k8s部署容器化应用nginx

  1. 打jar/war包

  2. 写Dockerfile生成镜像

  3. kubectl create deployment nginx --image=镜像名,暴露端口

  4. 镜像运行在pod中

   //下面重复启动如何删除节点
  //部署nginx,通过docker间接创建容器看到running,可能在不同容器运行
   //暴露端口
   //查看控制节点,和子节点的状态, 暴露节点的服务
        kubectl get deploy
        kubectl get pod   //或者pods
       kubectl get services
   //生成节点
       kubectl  delete deployment nginx //pod
   //默认在default   namespace创建
kubectl create deployment nginx --image=nginx

kubectl expose deployment nginx --port=80 --type=NodePort

kubectl get pod,svc

#部署tomcat

kubectl create deployment tomcat --image=tomcat

kubectl expose deployment tomcat --port=8080 --type=NodePort  

//运行springboot项目!!!,记得先测试jar包成功,不然也是会报PullErr的
//写Dockerfile文件

FROM openjdk:8-jdk
VOLUME /tmp
ADD target/demo.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

//打包为镜像

docker build -t 38-springboot-k8s-1.0.0-jar .
  //spingboot试运行,可以空运行生成yaml文件,然后提交yaml到k8s运行
kubectl create deployment springboot-k8s --image=38-springboot-k8s-1.0.0-jar --dry-run=client -o yaml > deploy.yaml
//改yaml在本地拉取,默认远程拉取,不行包PullErr错误
vi deploy.yaml文件里面container镜像从本地拉取;
    imagePullPolicy: Never
//提交到k8s
kubectl apply -f deploy.yaml
//暴露端口
kubectl expose deployment springboot-k8s --port=8080 --type=NodePort
kubectl get pod,svc
  //访问从内:外

10.k8s dashboard 使用页面管理
//提交文件到k8s拉镜像

wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.4/aio/deploy/recommended.yaml

kubectl apply -f recommended.yaml
 //文件修改配置文件里,可以用内部修改配置文件!!!(get pod无法看到已经启动的端口)
   kubectl -n kubernetes-dashboard edit service kubernetes-dashboard
  //生成token复制到访问页面dashboard

kubectl create serviceaccount dashboard-admin -n kube-system
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin

kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

11.3种端口

  1. nodePort向外暴露的端口
    // 优点 :type:NodePort可以暴露端口,yaml有写不用写语句 nodeport指定端口
    //不足: 1.一个服务一个端口使用2.只能使用30000-32767端口 3.如果虚拟机ip变化,需要人工处理(ip被写进配置了)
  1. targetPort 容器的端
  2. port 集群服务之间内部的端口

12.ingress入口(生产使用,不是内置的) 相当于网关,代替nodePort直接暴露关机端口可能变化
//有多种方式安装,我们使用拉取 nginx的方式
//下载deploy.yuml文件,改image的地址
wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.41.2/deploy/static/provider/baremetal/deploy.yaml

        spec:
    329       hostNetwork: true   //添加 
    330       dnsPolicy: ClusterFirst
    331       containers:
    332         - name: controller
    333           image: registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:0.33.0  //修改
    334           imagePullPolicy: IfNotPresent
//rule.yaml用于配置路由的规则,比如外面要访问到www.abc.com才能直接访问到内部80nginx端口
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: k8s-ingress
spec:
     rules:
     - host: www.abc.com
       http:
           paths:
           - pathType: Prefix
             path: /
             backend:
                 service:
                      name: nginx
                      port:
                        number: 80
 
     kubectl apply -f rule.yaml
      //如果之前存在
     kubectl delete ing k8s-ingress
     //查看配置的规则,记住要看规则的地址,客户端通过域名和ip同时访问服务器,然后通过ingress自动映射到pod的内部端口80
     //要在规则配置容器的内部端口才能访问!!!  
    kubectl get ing
 
     kubectl delete -A ValidatingWebhookConfiguration ingress-nginx-admission
//windows模拟访问到C:\Windows\System32\drivers\etc\hosts添加192.168.192.100 www.abc.com
//提交的任务如果有错误可以 kubectl delete servive/deploy/pod xx

//在客户端访问www.abc.com会跳到nginx页面

13.部署springcloud项目
//k8s部署无状态访问(静态数据) pod删除掉数据也保存下来没有影响下一次部署, euraka是有状态访问,影响灰度发布, 数据库会动态增加数据
//!!!到工作节点上传jar和Dockerfile
//先部署提供者和消费者,再部署网关,在加ingress(rule)
//和springboot流程一致,增加了ingress
//查看容器日志

kubectl logs -f xxxpods

//deploy是controller的类型,还可以部署定时任务…

14.动态扩容缩容
//改yaml的replicate的数量,注册中心会知道注册了多少台服务器
//如果在运行,更新配置文件文章来源地址https://www.toymoban.com/news/detail-650567.html

   vi deploy.yaml文件里面container镜像从本地拉取;
   //修改集群数
   spec:
        replicas: 2
  kubectl apply -f deploy.yaml

到了这里,关于Kubernetes介绍和部署,使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 探索云原生容器编排技术:如Kubernetes如何为大数据处理和AI模型的自动化部署带来便利

    🎈个人主页:程序员 小侯 🎐CSDN新晋作者 🎉欢迎 👍点赞✍评论⭐收藏 ✨收录专栏:云原生 ✨文章内容: 🤝希望作者的文章能对你有所帮助,有不足的地方请在评论区留言指正,大家一起学习交流!🤗 Kubernetes是一个强大的容器编排和自动化部署工具,它为大数据处理和

    2024年02月10日
    浏览(56)
  • 云原生|kubernetes|kubernetes集群部署神器kubekey的初步使用(centos7下的kubekey使用)

    kubernetes集群的安装部署是学习kubernetes所需要面对的第一个难关,确实是非常不好部署的,尤其是二进制方式,虽然有minikube,kubeadm大大的简化了kubernetes的部署难度,那么,针对我们的学习环境或者测试环境,我们应该如何能够快速的,简单的,非常优雅的部署一个学习或者

    2024年02月16日
    浏览(46)
  • 【云原生】Kubernetes临时容器

    特性状态: Kubernetes v1.25 [stable] 本页面概述了临时容器:一种特殊的容器,该容器在现有 Pod 中临时运行,以便完成用户发起的操作,例如故障排查。 你会使用临时容器来检查服务,而不是用它来构建应用程序 Pod 是 Kubernetes 应用程序的基本构建块。 由于 Pod 是一次性且可替

    2024年02月15日
    浏览(38)
  • Kubernetes(k8s)容器编排Pod介绍和使用

    Pod是kubernetes中你可以创建和部署的最小也是最简的单位,一个Pod代表着集群中运行的一个进程。 Pod有两个必须知道的特点 通过yaml文件或者json描述Pod和其内容器的运行环境和期望状态,例如一个最简单的运行nginx应用的pod,定义如下 3.1.1 参数描述 下面简要分析一下上面的

    2024年02月08日
    浏览(78)
  • Kubernetes介绍和部署,使用

    1.k8s kubernetes来自希腊语舵手,google, 8是ubernete 1.管理docker容器 go写的(并发) 2.用于微服务 3.cncf云原生基金会 2.mater(管理节点)和nodes(微服务节点) 3.部署 1.minikube kind官网在线测试语句 2.kubeadm(官方)(安装比较方便 添加) 3.github下载二进制包 4.yum(老) 5.大神封装的环境 6.买云服务商提

    2024年02月12日
    浏览(33)
  • 【云原生】容器编排工具Kubernetes

    目录 一、 K8S介绍 官网地址: 1.1docker编排与k8s编排相比 1.2特性 1.3功能 二、K8S重要组件 2.1核心组件 (1)Kube-apiserver (2)Kube-controller-manager (3)Kube-scheduler (4)Node ①kubelet ②kube-proxy ③docker (5)etcd 2.2Kubernetes工作原理 三、Pod 3.1 Pod控制器 (1)Deployment (2)ReplicaSet (3)

    2024年02月09日
    浏览(45)
  • 【云原生】Kubernetes容器编排工具

    目录 1. K8S介绍 1.1 k8s的由来 下载地址 1.2 docker编排与k8s编排相比 1.3 传统后端部署与k8s 的对比 传统部署 k8s部署  ​2. k8s的集群架构与组件 (1) Kube-apiserver (2)Kube-controller-manager  (3)Kube-scheduler   2.2 k8s的配置存储中心 2.3  k8s的Node 组件   (1)Kubelet   (2)Kube-Proxy 

    2024年02月10日
    浏览(39)
  • 云原生、容器化、Kubernetes、微服务

    作者:禅与计算机程序设计艺术 云原生(Cloud Native)是一个开放且社区驱动的项目,它定义了一组架构原则、最佳实践和工具集,这些原则、实践和工具围绕业务需求和工程实践而设计,可用于开发人员在构建和运行分布式系统时更加顺畅地交付可靠的软件。云原生可以帮助

    2024年02月07日
    浏览(43)
  • 【云原生】kubernetes中容器的资源限制

    目录 1 metrics-server 2 指定内存请求和限制 3 指定 CPU 请求和限制 资源限制 在k8s中对于容器资源限制主要分为以下两类: 内存资源限制: 内存 请求 (request)和内存 限制 (limit)分配给一个容器。 我们保障容器拥有它请求数量的内存,但不允许使用超过限制数量的内存。 官网参

    2024年02月14日
    浏览(47)
  • 云原生Kubernetes:CRI 容器运行时接口

    目录 一、理论 1.​CRI 2.容器运行时层级 3.容器运行时比较 二、总结 (1)概念       Kubernetes Node (kubelet) 的主要功能就是启动和停止容器的组件,我们 称之为容器运行时( Container Runtime) ,其中最知名的就是 Docker 。为了 更具扩展性, Kubernetes 1.5 版本开始就加入了容器运行

    2024年02月09日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包