热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

k8s命令重启_k8s安装与介绍

1.内容编排与kubernetes介绍支持集群环境内容编排的工具kubernetes简称k8s.k8s是谷歌官方提供的,底层基于docker,与dock
8473498095426ce9deb0b44592463e6b.png

1. 内容编排与kubernetes介绍

  • 支持集群环境内容编排的工具kubernetes 简称k8s.
  • k8s是谷歌官方提供的,底层基于docker,与docker-swarm是竞争关系。
  • 集群容器管理领域几乎都是采用的k8s。

「k8s的职责」

  • 自动化容器的部署和复制
  • 随时扩展或收缩容器规模
  • 容器分组Group,并且提供容器间的负载均衡
  • 实时监控,即时故障发现,自动替换

2.k8s基本概念

fbff6b06a29caf95c3c5199fdcd49c8c.png
  • k8s Master 主节点
  • Node 节点
  • Service 服务
  • Replication Controller 复制控制器
  • Label 标签
  • Container 容器
  • Pod k8s最小控制单元

「Master」

​ Master是集群的网关和中枢枢纽,主要作用:暴露API接口,跟踪其他服务器的健康状态、以最优方式调度负载,以及编排其他组件之间的通信。单个的Master节点可以完成所有的功能,但是考虑单点故障的痛点,生产环境中通常要部署多个Master节点,组成Cluster.

「Node」

​ Node是k8s的工作节点,负责接收来自Master的工作指令,并根据指令相应地创建和销毁Pod对象,以及调整网络规则进行合理路由和流量转发。生产环境中,Node节点可以有N个。

「Pod」

  • pod是容器的容器,可以包含多个Container
  • 是k8s最小的可部署的单元,一个Pod就是一个进程
  • pod内部容器的网络互通,每个pod都有独立的虚拟ip
  • pod都是部署完整的应用或者模块
8d153d1e724b3ccb26dcf5956ee7f9ee.png

3. k8s安装

国内安装k8s途径

  • 「使用kubeadmin离线安装」
  • 使用阿里公有云平台k8s
  • 通过yum官方仓库
  • 二进制包形式安装,kubeasz

3.1 安装kubeadmin加载k8s镜像

# 以下命令在三台虚拟机执行 yz10 yz20 yz21
mkdir /usr/local/k8s-install
cd /usr/local/k8s-install

4. k8s离线部署

10.211.55.10 yz10 Master节点
10.211.55.20 yz20 Node节点
10.211.55.21 yz21 Node节点# 1. 调整时区
timedatectl set-timezone Asia/Shanghai
# 2. 关闭selinux和防火墙
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
systemctl disable firewalld
systemctl stop firewalld
# 3. k8sadmin镜像下载附带对应的docker
# 4. 镜像上传到每个节点
mkdir -p /usr/local/k8s-install
scp -r kubernetes-1.14 root@yz10:/usr/local/k8s-install# 5. 安装docker,记得配置加速器
tar -xf docker-ce-18.09.tar.gz
cd docker
yum localinstall -y *.rpm# 6. 确认cgroup为 cgroupfs
docker info|grep cgroup
# 7. 安装kubeadm
tar -xf kube114-rpm.tar.gz
cd kube114-rpm
yum localinstall -y *.rpm# 8. 关闭交换区
swapoff -a #关闭
vi /etc/fstab
# 注释这行 永久关闭
#/dev/mapper/centos-swap swap swap defaults 0 0# 9. 配置网桥
cat < /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables &#61; 1
net.bridge.bridge-nf-call-iptables &#61; 1
EOF
sysctl --system# 10. 通过镜像安装k8s
docker load -i k8s-114-images.tar.gz
docker load -i flannel-dashboard.tar.gz

5. 构建k8s集群

确保上述节点都已经安装好了k8s。

# master主服务器网络设置
kubeadm init --kubernetes-version v1.14.1 --pod-network-cidr 10.244.0.0/16# 运行完毕后查看需要手动运行的命令
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config# 查看节点&#xff0c; 可以看到只有一个master节点
kubectl get nodes
NAME STATUS ROLES AGE VERSION
yz10 NotReady master 5m21s v1.14.1# 查看存在问题的pod
kubectl get pod --all-namespaces

3536ad0373da61da7dc42ad18976b945.png

# pending 是需要安装flannel网络组件
kubectl create -f /usr/local/k8s-install/kubernetes-1.14/kube-flannel.yml# 再次查看&#xff0c;已经处于running状态
kubectl get pod --all-namespaces# 查看master的token
kubeadm token list# 其余节点加入master节点集群
kubeadm join 10.211.55.10:6443 --token 63zvtd.rej4gqrhselysqsb --discovery-token-unsafe-skip-ca-verification

master节点运行: kubectl get nodes

2e5a90cef18380d78a8d99b4153a5963.png

可以看到&#xff0c;集群已经部署完毕。

6. k8s设置重启服务

  • kubeadm 是k8s集群快速构建工具
  • kubelet 运行在所有节点上&#xff0c;负责启动pod和容器&#xff0c;以系统服务的形式出现
  • kubectl 是k8s命令行工具&#xff0c;提供指令

systemctl start kubelet

设置开机启动 systemctl enable kubelet

7.开启WebUI Dashboard

# master开启仪表盘
kubectl apply -f kubernetes-dashboard.yaml
kubectl apply -f admin-role.yaml
kubectl apply -f kubernetes-dashboard-admin.rbac.yamlkubectl -n kube-system get svc# 查看pod情况&#xff0c;dashbord running正常
kubectl get pods --all-namespaces# 遇到问题可以删除pod&#xff0c;重新配置
kubectl -n kube-system delete pod/{podName}

访问 http://宿主机ip:32000/ 即可进入dashbord

8.dashbord 部署tomcat集群

工作负载 -》 创建 即可

9.deployment脚本部署tomcat集群

  • 部署是指k8s向node节点发送指令创建容器的过程
  • k8s支持yml格式的部署脚本
  • kubectl create -f 部署文件.yml

编写第一个k8s部署脚本文件&#xff1a;

apiVersion: extensions/v1beta1
kind: Deployment
metadata: name: tomcat-deploy
spec: replicas: 2template: metadata:labels:app: tomcat-clusterspec: containers: - name: tomcat-clusterimage: tomcatports: - containerPort: 8080

「与部署相关的常用命令&#xff1a;」

  • kubectl create -f 部署文件.yml -》 创建部署
  • kubectl apply -f 部署文件.yml -》 更新部署配置
  • kubectl get pod [-o wide] -》 查看已部署pod
  • kubectl describe pod pod名称 -》 查看pod详细信息
  • kubectl logs [-f] pod名称 -》 查看pod输出日志

# 创建tomcat容器
kubectl create -f tomcat-deploy.yml# 查看部署
kubectl get deployment

10. 外部访问tomcat集群

service 服务用于对外暴露应用。

3023663ae9624209e974303901a8a28f.png

编写服务 tomcat-service.yml

apiVersion: v1
kind: Service
metadata: name: tomcat-servicelabels: app: tomcat-service
spec:type: NodePortselector: app: tomcat-clusterports: - port: 18010targetPort: 8080nodePort: 32500# 创建负载均衡服务
kubectl create -f tomcat-service.yml# 查看服务
kubectl get service

11. 基于NFS实现集群文件共享

  • nfs主要是采用远程过程调用RPC机制实现文件传输
  • yum install -y nfs-utils rpcbind
420f4a5a6d0bb5835afc4ecb2d30fd16.png

# 编辑nfs共享文件设置
vi /etc/exports/usr/local/data/www-data 10.211.55.10/24(rw,sync)systemctl start nfs.service
systemctl start rpcbind.servicesystemctl enable nfs.service
systemctl enable rpcbind.service# exportfs查看
exportfs
/usr/local/data/www-data10.211.55.10/24 # 说明配置生效# 节点安装工具
yum install -y nfs-utils# 节点安装完毕后
showmount -e yz10# 挂载文件
mkdir -p /mnt/www-data
mount yz10:/usr/local/data/www-data /mnt/www-data

12. 部署配置挂载点

# 查看deployment
kubectl get deployment# 删除部署,服务service
kubectl delete deployment tomcat-deploy
kubectl delete service tomcat-service# 重新部署挂载
vi tomcat-deploy.yml # 修改部署文件apiVersion: extensions/v1beta1
kind: Deployment
metadata:name: tomcat-deploy
spec:replicas: 2template:metadata:labels:app: tomcat-clusterspec:volumes: - name: webapphostPath: path: /mnt/www-datacontainers:- name: tomcat-clusterimage: tomcatports:- containerPort: 8080volumeMounts: - name: webappmountPath: /usr/local/tomcat/webapps# 进入pod查看挂载是否成功
kubectl exec -it tomcat-deploy-6dcc5c59c-hg5z7 bash

13. 利用 Rinetd 对外提供Service以及负载均衡支持

vi tomcat-service.yml 修改服务文件

apiVersion: v1
kind: Service
metadata:name: tomcat-servicelabels:app: tomcat-service
spec:
# type: NodePortselector:app: tomcat-clusterports:- port: 18010targetPort: 8080
# nodePort: 32500# 创建服务
kubectl create -f tomcat-service.yml
# 在www-data 创建一个test目录创建文件
vi index.jsp
<%&#61;request.getLocalAddr()%># 访问
curl http://10.97.80.216:18010/test/index.jsp

e698abb7fadbf228a6343b7fc0048ad5.png
fc56d7782ce4d9a9817c8e2116756e89.png

可以观察到随机负载均衡的效果。

「端口转发工具 Rinetd」

  • Rinetd 是Linux操作系统中为重定向传输控制协议工具
  • 可以将源ip端口数据转发到目标ip端口
  • 在k8s中用于将service服务对外暴露

# 宿主机安装Rinted
cd /usr/local
http://www.rinetd.com/download/rinetd.tar.gz
cd rinetd
sed -i &#39;s/65536/65535/g&#39; rinetd.c
mkdir -p /usr/man/
yum install -y gcc
make && make install# 编写端口映射配置
vi /etc/rinetd.conf
0.0.0.0 18010 10.97.80.216 18010# 加载配置
rinetd -c /etc/rinetd.conf# 测试外部访问&#xff0c;已经可以通了
http://yz10:18010/test/

14. 更新集群配置与资源限定

「k8s部署调整命令」

  • 更新集群配置: kubectl apply -f yml文件
  • 删除部署|服务|pod
  • kubectl delete deployment | service | pod 名称

「资源限定」

containers:
- name: tomcat-clusterimage: tomcatresources: requests: # 需要的资源cpu: 1memory: 500Milimits: # 限制的资源cpu: 2 # cpu不一定是整数memory: 1024Mi




推荐阅读
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 本文介绍了将mysql从5.6.15升级到5.7.15的详细步骤,包括关闭访问、备份旧库、备份权限、配置文件备份、关闭旧数据库、安装二进制、替换配置文件以及启动新数据库等操作。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • Spring学习(4):Spring管理对象之间的关联关系
    本文是关于Spring学习的第四篇文章,讲述了Spring框架中管理对象之间的关联关系。文章介绍了MessageService类和MessagePrinter类的实现,并解释了它们之间的关联关系。通过学习本文,读者可以了解Spring框架中对象之间的关联关系的概念和实现方式。 ... [详细]
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
  • 本文记录了在vue cli 3.x中移除console的一些采坑经验,通过使用uglifyjs-webpack-plugin插件,在vue.config.js中进行相关配置,包括设置minimizer、UglifyJsPlugin和compress等参数,最终成功移除了console。同时,还包括了一些可能出现的报错情况和解决方法。 ... [详细]
author-avatar
爱他让我心痛_830
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有