Docker实战技巧(二):Kubernetes基础操作实战

news2024/11/20 18:39:28

Kubernetes定位在Saas层,重点解决了微服务大规模部署时的服务编排问题

1、关闭防火墙并设置开机禁用
  systemctl stop firewalld
  systemctl disable firewalld
2、配置repo
  cd /etc/yum.repos.d/
  下载Docker repo
  wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  配置kubernetes repo
  vim kubernetes.repo
  [kubernetes]
  name=Kubernetes Repo
  baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
  gpgcheck=0
  gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
  enabled=1
  查看是否配置成功yum repolist
3、配置gpg
  wget https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
  wget https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
  rpm --import rpm-package-key.gpg
  rpm --import yum-key.gpg
4、安装docker-ce kubernetes
  yum install docker-ce kubelet kubeadm kubectl -y
5、配置docker初始化
  vi /usr/lib/systemd/system/docker.service
  添加初始化环境变量
  Environment="HTTPS_PROXY=http://www.ik8s.io:10080"
  Environment="NO_PROXY=127.0.0.1/8,172.20.0.0/16"
6、启动docker设置开机自启动
  systemctl start docker
  systemctl enable docker
7、忽略swap警报,启动kubelet
  vi /etc/sysconfig/kubelet
  KUBELET_EXTRA_ARGS="--fail-swap-on=false"
  systemctl enable kubelet.service
  systemctl start kubelet
8、下载k8s镜像
  1)、在github上创建库

    

092a3a3cdc38aae69ae9ef699f6fd699.png

  2)、克隆到本地然后创建Dockerfile

    

cc2c5fba6cb049ab50e426f50c1aeea8.png

  每个内容如下

    

1127a286844d17d9a56d9919f8322c59.png

  然后推送
  3)、在docker hub上创建关联github

    

4d9450963c27d48352cd0ef45b5b22ec.png

  4)、下载镜像,执行下列脚本

    

55926dc49503b5c7481f7090bb284eab.png

  5)、初始化,
    kubeadm init --kubernetes-version=v1.12.1 --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=Swap
  6)、等初始化完成后,配置用户权限
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    然后添加node,在node机上执行
    kubeadm join 192.168.137.200:6443 --token cl60h7.y4o6vpizk64j5cz6 --discovery-token-ca-cert-hash sha256:1fda5b34ecd3abb044ff137e5e74afbeea95cfdb881038ed78961b8d2ef00017
  7)、查看状态
    kubectl get cs
  8)、查看nodes
    kubectl get nodes
  9)、安装flannel
    kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    等待一段时间使用kubectl get nodes查看节点的状态为Ready,表示安装成功
    启动一个服务
    加入node时如果报错dial tcp 10.96.0.1:443: getsockopt: no route to host --- kubernetes(k8s)DNS 服务反复重启iptables规则乱了,通过下面命令纠正:
    systemctl stop kubelet
    systemctl stop docker
    iptables --flush
    iptables -tnat --flush
    systemctl start kubelet
    systemctl start docker
    kubectl run nginx-deploy --image=nginx:1.14-alpine --port=80 --replicas=1
    将服务暴露在集群外
    kubectl expose deployment nginx-deploy --name=nginx --port=80 --target-port=80 --protocol=TCP
  10)、查看pod
    kubectl get pods
    查看pod起在哪个节点上
    kubectl get pods -o wide
    查看pod有哪些标签
    kubectl get pods --show-labels

      

e406e9e8a864d4deb3f1c15784a57e40.png

    查看命名空间中的pod
    kubectl get pods --all-namespaces

      

1a917141c15b54c54d15bfef0555c52a.png

    如果Error、Pending、ImagePullBackOff、CrashLoopBackOff都属于启动失败,排查:
      a、查看 /var/log/messages系统日志
      b、kubectl describe pod kube-flannel-ds-amd64-bq6fp --namespace=kube-system 看出node1上flannel镜像下载失败,去node1上手动下载镜像

        

ae2a62a924b743ee495fef97d0609e5b.png

      c、kubectl logs -f kube-flannel-ds-amd64-bq6fp -n kube-system kubedns
  11)、删除pod
    kubectl delete pods <pod NAME>
    (删除后会自动重新创建pod)
  12)、查看services
    kubectl get svc
    查看services都有选择哪些pod,根据标签
    kubectl get svc -o wide

      

ea199c1b5d7e4a354ba8cb956b7f51dc.png

  13)、创建一个容器并运行,名字为nginx-deploy,镜像,端口,使用一个pod
    kubectl run nginx-deploy --image=nginx:1.14-alpine --port=80 --replicas=1
  14)、进入运行中的pod
    kubectl exec nginx-deploy-86bf78c77-kxtch -it sh
  15)、查看deployment
    kubectl get deployment
  16)、查看容器运行在那个node
    kebuctl get node -o wide
  17)、创建service,使用nginx-deploy容器,名称,端口,暴露端口
    kubectl expose deployment nginx-deploy --name=nginx --port=80 --target-port=80
  18)、修改运行实例的个数
    kubectl scale --replicas=3 deployment myapp
  19)、对实例进行升级
    kubectl set image deployment nginx-deploy nginx-deploy=nginx:1.17
  20)、回滚升级
    kubectl rollout undo deployment nginx-deploy
  21)、修改svc
    kubectl edit svc nginx-deploy
    spec:type: NodePort 将type改为 NodePort
    可是在集群外访问node IP

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1035186.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【论文写作】Latex 所有符号汇总参考

【论文写作】Latex 所有符号汇总参考 文章目录 【论文写作】Latex 所有符号汇总参考1. 希腊字母2. 数学构造3. 分割4. 累加累成等5. 标准函数名称6. 二进制符号&#xff08;关系符号&#xff09;7. 箭头8. 杂项符号&#xff08;其他的符号&#xff09;9. 数学模式重音、音节10.…

结构体-寻找爱好相同的人

任务描述 每个人有三项爱好&#xff0c;分别是食物&#xff0c;饮料&#xff0c;电影&#xff0c;运动等中的任意三项&#xff0c;第 i 个人的三种爱好分别用一个整数 ai​&#xff0c;bi​&#xff0c;ci​ 来表示。现在给出 n 个人的爱好&#xff0c;如果两个人起码有两项以…

YOLOv3模型原理深度解析

概况 &#xff08;1&#xff09;YOLOv3是YOLO系列第一次引入残差连接来解决深度网络中的梯度消失问题&#xff08;是不是第一次&#xff0c;有待你后面考证&#xff09;&#xff0c;实际用的backbone是DarkNet53 &#xff08;2&#xff09;最显著的改进&#xff0c;也是对你涨…

[Linux]线程概念

[Linux]线程概念 文章目录 [Linux]线程概念什么是线程Linux系统下的线程实现线程是CPU调度的基本单位进程是系统分配资源的基本实体二级页表 线程的优点线程的缺点线程异常线程用途线程资源 什么是线程 线程是进程内部的一个执行分支&#xff0c;执行粒度比进程更细&#xff0…

MyBatis 中的插件可以拦截哪些操作

MyBatis 中的插件可以拦截哪些操作 MyBatis 是一个优秀的持久化框架&#xff0c;在实际项目开发中广泛应用。MyBatis 的插件机制可以方便地对 MyBatis 的各个环节进行扩展和定制。在本文中&#xff0c;我们将详细介绍 MyBatis 中的插件机制&#xff0c;并探讨插件可以拦截哪些…

十五、红外遥控器

十五、红外遥控器 介绍基本接收和发送遥控器键码外部中断和外部中断寄存器 红外解码中断函数红外遥控电机模块电机调速 介绍 基本接收和发送 空闲状态&#xff1a;红外LED不亮&#xff0c;接收头输出高电平发送低电平&#xff1a;红外LED以38KHz闪烁&#xff0c;接收头输出低…

深入理解requests库和使用方法

【软件测试面试突击班】如何逼自己一周刷完软件测试八股文教程&#xff0c;刷完面试就稳了&#xff0c;你也可以当高薪软件测试工程师&#xff08;自动化测试&#xff09; 一、requests简介 首先我们要了解requests库是个什么 #简介&#xff1a;使用requests可以模拟浏览器的…

10.3使用Servlet写一个表白墙网站

一.创建项目,引入依赖和前端页面. 1.注意,静态页面放在webapp目录下,不是WEB-INF, 2.存档约定:前端使用post(/messageWall/message)发送http请求,使用json格式把数据传输到后端.服务器返回HTTP/1.1 200 ok. 3.读档约定:使用get(/messageWall/message),服务器返回HTTP/1.1 200…

【C++入门指南】C如何过渡到C++?祖师爷究竟对C++做了什么?

【C入门指南】C如何过渡到C&#xff1f;祖师爷究竟对C做了什么&#xff1f; 前言一、命名空间1.1 命名空间的定义1.2 命名空间使用 二、C输入、输出2.1 std命名空间的使用惯例 三、缺省参数3.1 缺省参数的定义3.2 缺省参数分类 四、函数重载4.1 函数重载概念4.2 C支持函数重载的…

C++17中std::filesystem::path的使用

C17引入了std::filesystem库(文件系统库, filesystem library)。这里整理下std::filesystem::path的使用。 std::filesystem::path&#xff0c;文件系统路径&#xff0c;提供了对文件系统及其组件(例如路径、常规文件和目录)执行操作的工具。此path类主要用法包括&#x…

大众滑雪赛事活动等级划分与评定规范 学习

声明 本文是学习GB-T 42374-2023 大众滑雪赛事活动等级划分与评定规范. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本文件确立了大众滑雪赛事活动的等级划分规则&#xff0c;规定了总体要求、评定主体、申报条件、等级评定 要求、结果应…

Linux0.11——第二回 从0x7c00到0x90000

上一讲&#xff0c;讲了CPU执行操作系统的最开始的两行代码&#xff1a; mov ax, 0x07c0 mov ds, ax这两行代码将数据段寄存器 ds 的值变成了 0x07c0&#xff0c;方便之后访问内存时&#xff0c;利用这个段基址进行寻址。 接下来的代码&#xff1a; mov ax,0x9000 mov es,ax…

微服务学习(八):安装JDK

微服务学习&#xff08;八&#xff09;&#xff1a;安装JDK 1、下载JDK 2、将下载后的资源包上传到服务器 3、解压资源包并安装 tar -zxvf jdk-8u371-linux-x64.tar.gz4、配置环境变量 vi /etc/profileexport JAVA_HOME/home/java/jdk1.8.0_371/ export PATH$PATH:$JAVA_HOM…

关于ES5内置函数Object的新方法--Object.create()

在今天的学习中&#xff0c;更深层次的了解了一下ES5中内置函数Object的新方法Object.create(),觉得这个api功能真的十分强大&#xff0c;并且使用的场景也有很多&#xff0c;现和各位同行们分享学习成果&#xff0c;欢迎各位大佬们指正&#xff0c;废话不多说&#xff0c;开整…

git reset origin --hard解决‘Your branch is ahead of ‘origin/xxxx‘ by xx commit.’

git reset origin --hard解决‘Your branch is ahead of origin/xxxx by xx commit.’ 如图&#xff1a; 之前是这么解决的解决git&#xff1a;Your branch is ahead of ‘XXX‘ by X commits-CSDN博客git删除/撤销远已经push到程服务器上某次代码提交场景&#xff1a;不小心把…

InterSystems开发者社区中文版第二届技术征文大赛正式启动!

嗨&#xff0c;开发者们&#xff01; 秋高气爽之际&#xff0c;我们很高兴地宣布启动&#x1f3c6;InterSystems开发者社区中文版第二届技术征文大赛 &#x1f3c6;&#xff08;←点击链接进入参赛页面&#xff09;&#xff01; 从2023年9月19日-10月24日&#xff08;北京时间…

基于微服务的第二课堂管理系统(素质拓展学分管理平台)SpringCloud、SpringBoot 分布式,微服务

基于微服务的第二课堂管理系统 一款真正的企业级开发项目&#xff0c;采用标准的企业规范开发&#xff0c;有项目介绍视频和源码&#xff0c;需要学习的同学可以拿去学习&#xff0c;这是一款真正可以写在简历上的校招项目&#xff0c;能够真正学到东西的一个项目&#xff0c;话…

【论文写作】符号:矩阵、向量的乘法、内积、点积等

【论文写作】符号&#xff1a;矩阵、向量乘法、内积、点积等 文章目录 【论文写作】符号&#xff1a;矩阵、向量乘法、内积、点积等1. 矩阵乘法1.1 矩阵乘积1.2 矩阵哈德玛乘积1.3 矩阵克罗内克积 2. 向量乘法2.1 向量点积、内积2.2 向量Hadamard积2.3 向量外积2.4 向量叉积 1.…

科研之路(2023.9.22)

前言 理解小车底盘代码&#xff0c;为了轨道机器人研究 笔记