k8s部署

news2024/11/17 23:43:16

kubernetes简要

Kubernetes 是用于自动部署, 扩展和管理容器化应用程序的开源系统. 它将组成应用程序的容器组合成逻辑单元, 以便于管理和服务发现

kubernetes 功能简介

服务发现和负载均衡

存储编排

自动部署和回滚

自动完成装箱计算

自我修复

密钥与配置管理

主机规划

role  ipaddress  configure
k8s-master192.168.22.2084 core, 4Gb; 50GBS, CentOS 7.9
k8s-worker-01192.168.22.2054 core, 4Gb; 100GBS, CentOS 7.9
k8s-worker-02192.168.22.2014 core, 4Gb; 100GBS, CentOS 7.9

环境初始化

检查操作系统的版本

主机名解析

时间同步

关闭防火墙和selinux

修改主机名

安装

下载部署k8s集群的安装仓库

[root@k8s-master ~]# git clone https://gitee.com/mirschao/k8sconfig.git

 初始化脚本里面就是去关闭防火墙,selinux,swap分区,以及增加相应的解析。

运行脚本之前,把hosts文件改了

[root@k8s-master kubeadm-deploys]# vi initialenv.sh 

export MASTER='192.168.22.208'
export WORKER1='192.168.22.205'
export WORKER2='192.168.22.201'
export MASTER_HOSTNAME='k8s-master'
export WORKER1_HOSTNAME='k8s-worker-01'
export WORKER2_HOSTNAME='k8s-worker-02'

初始化每个节点

 [root@k8s-master kubeadm-deploys]# bash initialenv.sh   当它运行成功后,看看主机解析,其他的一些工具安装,对不对。如果没报错,就到第二台,第三台执行就好了

[root@k8s-master kubeadm-deploys]# scp initialenv.sh root@k8s-worker-01:/root/  传到另外两台机器下的root目录下

[root@k8s-master kubeadm-deploys]# scp initialenv.sh root@k8s-worker-02:/root/

传完之后,在另外两台机器执行脚本,执行之前先声明这些变量,再去执行初始化脚本。

 安装完毕,解析都没有问题。

安装 kubeadm 程序

[root@k8s-master kubeadm-deploys]# yum list kubeadm.x86_64 --showduplicates | sort -r   看kubeadm能安装的版本有哪些

最新版是1.25,阿里是1.22/1.23。我是安装的1.21.14-0(1.21是一个过渡版,承托了上层也承托着下层,能体验到以前的老功能,也能明白学习方向)

master中执行

[root@k8s-master kubeadm-deploys]# yum -y install kubeadm-1.21.14-0 kubelet-1.21.14-0 kubectl-1.21.14-0      kubeadm是安装k8s集群的工具,kubelet是worker节点控制容器运行的工具,kubectl是运维工程师控制k8s集群的命令行工具,可以通过命令行控制k8s里面的资源。

worker中执行

[root@k8s-worker-01 ~]# yum -y install kubeadm-1.21.14-0 kubelet-1.21.14-0

[root@k8s-worker-02 ~]# yum -y install kubeadm-1.21.14-0 kubelet-1.21.14-0

master及worker节点均要执行

修改kubelet的管理驱动,运行容器都是使用namespace和cgroup去进行资源的限额和命名空间的限定,所以要去改资源限额的驱动。把它改成是systemd去进行管理的。

cat <<-EOF >/etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
EOF

systemctl enable --now kubelet  启动

 这种状态是正常的,不用管

生成集群初始化配置文件

[root@k8s-master kubeadm-deploys]# kubeadm config print init-defaults >initial.yaml

[root@k8s-master kubeadm-deploys]# vi initial.yaml 这个配置文件中是清单,在清单中保存好我们运行的k8s的版本,包括服务的ip及哈希值,在哪里下载镜像都放在这里。

镜像的下载地址改为阿里云的

[root@k8s-master kubeadm-deploys]# REGISTRYADDR="registry.cn-hangzhou.aliyuncs.com/google_containers"

[root@k8s-master kubeadm-deploys]# sed -i "s#k8s.gcr.io#${REGISTRYADDR}#" initial.yaml 使用sed去修改k8s.gcr.io(因为是国外的镜像网站,访问不到)

[root@k8s-master kubeadm-deploys]# sed -i "s# node# ${HOSTNAME}#" initial.yaml  给集群起名字,调用了hostname

[root@k8s-master kubeadm-deploys]# IPADDRESS=$(ifconfig | grep ens33 -A 2 | awk 'NR==2{ print $2 }')   截取了本地的ip地址

[root@k8s-master kubeadm-deploys]# sed -i "s/1.2.3.4/${IPADDRESS}/" initial.yaml   把ip地址中的1234改成当前主机的ip地址,

配置下载镜像的位置,节点的名称。

[root@k8s-master kubeadm-deploys]# kubeadm config images pull --config initial.yaml  拉取初始化所需要的镜像文件

[root@k8s-master kubeadm-deploys]# kubeadm init --config initial.yaml --upload-certs     初始化集群

如果集群初始化失败: (每个节点都要执行)
$ kubeadm reset -f; ipvsadm --clear; rm -rf ~/.kube
$ systemctl restart kubelet

粘贴到这里,最后面要用

To start using your cluster, you need to run the following as a regular user:

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 192.168.22.208:6443 --token abcdef.0123456789abcdef \
        --discovery-token-ca-cert-hash sha256:977c8102db324b1f0031e665f0f1893266f4be1c5fb625eea1ef41e294679cbd

 [root@k8s-master kubeadm-deploys]# mkdir -p $HOME/.kube

[root@k8s-master kubeadm-deploys]# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

[root@k8s-master kubeadm-deploys]# chown $(id -u):$(id -g) $HOME/.kube/config

 [root@k8s-master kubeadm-deploys]# vi ~/.bashrc  复制到最后

 [root@k8s-master kubeadm-deploys]# source ~/.bashrc   生效

 部署calico网络插件

 [root@k8s-master kubeadm-deploys]# sed -i 's#etcd_endpoints: "http://<ETCD_IP>:<ETCD_PORT>"#etcd_endpoints: "https://172.16.12.11:2379"#g' calico-etcd.yaml  去改calico的ip地址,它服务的ip地址,因为etcd只运行在当前master中,所以只写master节点就行

获取证书的命令

ETCD_CA=`cat /etc/kubernetes/pki/etcd/ca.crt | base64 | tr -d '\n'`
ETCD_CERT=`cat /etc/kubernetes/pki/etcd/server.crt | base64 | tr -d '\n'`
ETCD_KEY=`cat /etc/kubernetes/pki/etcd/server.key | base64 | tr -d '\n'`

 [root@k8s-master kubeadm-deploys]# sed -i "s@# etcd-key: null@etcd-key: ${ETCD_KEY}@g; s@# etcd-cert: null@etcd-cert: ${ETCD_CERT}@g; s@# etcd-ca: null@etcd-ca: ${ETCD_CA}@g" calico-etcd.yaml     将它注入到calico的配置文件中

[root@k8s-master kubeadm-deploys]# sed -i 's#etcd_ca: ""#etcd_ca: "/calico-secrets/etcd-ca"#g; s#etcd_cert: ""#etcd_cert: "/calico-secrets/etcd-cert"#g; s#etcd_key: ""#etcd_key: "/calico-secrets/etcd-key"#g' calico-etcd.yaml  放开路径

如果机器是192.168 就要设置成172.16.0.0/16 (私网起头的网络位是不一样的)

[root@k8s-master kubeadm-deploys]# sed -i 's@# - name: CALICO_IPV4POOL_CIDR@- name: CALICO_IPV4POOL_CIDR@g; s@#   value: "172.16.0.0/16"@  value: '"172.16.0.0/16"'@g;' calico-etcd.yaml  

[root@k8s-master kubeadm-deploys]# kubectl apply -f calico-etcd.yaml   根据资源清单创建在k8s集群中

calico安装完毕

对于集群后续的配置和设置

集群网络规则采用 ipvs 模式

[root@k8s-master kubeadm-deploys]# kubectl edit configmap kube-proxy -n kube-system

[root@k8s-master kubeadm-deploys]# kubectl get pod -n kube-system   

 把这三个kube-proxy删掉,删掉它会自动启动出来新的kube-proxy,就是让它使用我们上面设置的ipvs描述,这就是k8s的好处,随便删,删不坏。

[root@k8s-master kubeadm-deploys]# kubectl delete pod kube-proxy-6h7fp -n kube-system

[root@k8s-master kubeadm-deploys]# kubectl delete pod kube-proxy-nnvj4 -n kube-system

[root@k8s-master kubeadm-deploys]# kubectl delete pod kube-proxy-ns4qv -n kube-system

增加节点

 再到第三个节点运行,发现又多了一个节点。

这个状态慢慢会变成ready

 以后想扩展集群,使用初始化脚本先运行一遍,然后再去运行刚刚kubeadm join 加入集群的指令,就可以组建成多个集群的节点了。

如果忘记token值   复制粘贴就出来了
$ kubeadm token create --print-join-command
$ kubeadm init phase upload-certs --upload-certs

集群搭建完毕。

测试集群是否成功安装

 先要保证节点是rode的状态,再去运行测试

cat <<-EOF | kubectl apply -f -
apiVersion: v1
kind: Pod
metadata:
  name: webserver
spec:
  containers:
  - name: nginx-contianer
    image: nginx:1.21
    ports:
    - containerPort: 80
EOF

[root@k8s-master kubeadm-deploys]# watch -n 1 kubectl get pods    

 kubectl get pods -owide    获取ip地址

curl -I http://192.168.22.208

状态码成200就成功了。

【注意】少熬夜,多看书。

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

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

相关文章

UE5蓝图常用流程节点总结

整理了一下平常做功能开发比较常用的蓝图节点&#xff0c;目录如下&#xff1a; 1. ExecuteConsoleCommand 2. Do N 3. Do Once 4. DoOnceMultiInput 5. Gate 6.MultiGate 7. Branch 8. Sequence 9. FlipFlop 10. Delay 11. Retriggerable Delay 1. ExecuteConsole…

OffiSmart Summit智慧办公及空间管理上海线下峰会精彩亮点抢先看

“聚焦行业生态格局焕新&#xff0c;赋能智慧办公全面落地”——OffiSmart Summit上海国际智慧办公与空间管理峰会即将盛大召开&#xff0c;2022下半年不容错过的智慧办公行业盛会&#xff01;时间&#xff1a;2022年11月22日 9:00 - 16:30 地点&#xff1a;上海市浦东新区卓美…

Python3《机器学习实战》学习笔记(九):ANN人工神经网络基础详解

文章目录一、简介二、ANN算法细节详解2.1 深度学习要解决的问题2.2 深度学习应用领域2.3 计算机视觉任务2.4 视觉任务中遇到的问题2.4.1回顾K近邻算法2.4.2为啥不能用K近邻2.5得分函数2.6损失函数2.7前向传播流程2.8反向传播计算2.9神经网络整体架构2.10神经元个数对结果的影响…

【Linux】Jetson nano 使用记录,安装torch1.8、yolov5 tensorrt加速、java等

Jetson nano一、u盘系统安装1.1 烧录EMMC引导1.2 烧录U盘系统二、启动、环境配置2.1 设置vnc分辨率2.2. 更新软件三、启动、环境配置3.1 安装conda3.2 安装python3.6版本torch1.83.3 配置yolov5 tensorrt加速3.3.1 转换wts和engine3.3.2使用python脚本运行engine其它记录安装ja…

Postgresql顺滑升级步骤(11升级到14)

首先下载pgsql14的源码包进行安装&#xff1a; yum install postgresql14 –y yum install postgresql14-server -y 附带安装 yum install postgresql14-libs yum install postgresql14-contrib yum install postgresql14-devel 注&#xff1a;如果旧版本装了插件&#…

生态环境影响评价制图流程

生态现状评价内容中基本图件构成包含&#xff1a;项目区域地理位置图、工程平面图、调查样方、样线、点位、断面等布设图、土地利用现状图、地表水系图、植被类型图、植被覆盖度图、归一化植被指数图、生态系统类型图、土壤侵蚀图、物种适宜生境分布图等。 介绍 2.2.遥感常用数…

基于微信小程序的核酸检测系统源码

开发环境及工具&#xff1a; 大等于jdk1.8&#xff0c;大于mysql5.5&#xff0c;idea&#xff08;eclipse&#xff09;&#xff0c;微信开发者工具 技术说明&#xff1a; springboot mybatis 小程序 代码注释齐全&#xff0c;没有多余代码&#xff0c;适合学习(毕设)&#…

动态自适应可变加权极限学习机ELM预测算法附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

Vue(十)——页面路由(2)

目录 router-link的replace属性 编程式路由导航 缓存路由组件 两个新的生命周期钩子 路由守卫 全局守卫 独享守卫 组件内守卫 路由器的两种工作模式 hash模式 history模式 router-link的replace属性 浏览器历史记录的操作模式&#xff1a;push模式 对历史记录的操作…

视频编解码之理论概述

本文主要讲解实时音视频技术中视频技术的编解码基础理论。 1、视频为何需要压缩&#xff1f; 未经压缩的数字视频的数据量巨大存储困难&#xff1a;一张DVD只能存储几秒钟的未压缩数字视频。传输困难 1兆的带宽传输一秒的数字电视视频需要大约4分钟。2、主要压缩了什么东西&am…

【Pytorch with fastai】第 12 章 :从零开始的语言模型

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

[附源码]SSM计算机毕业设计8号体育用品销售及转卖系统JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【机器学习】机器学习知识点全面总结(监督学习+无监督学习)

目录&#xff1a;机器学习知识点全面总结一、监督学习1.1 单模型1.1.1 线性回归1.1.2 逻辑回归1.1.3 Lasso1.1.4 K近邻(KNN)1.1.5 决策树1.1.6 bp神经网络1.1.7 支持向量机(SVM)1.1.8 朴素贝叶斯1.2 集成学习1.2.1 Boosting1.2.1.1 GBDT1.2.1.2 Adaboost1.2.1.3 XGBoost1.2.1.4…

防火墙NAT配置实验

目录 一、NAT的种类 分为基于源IP的转换 基于目的的IP转换 外部用户找内部服务器 二、实验拓扑 登陆防火墙 三、配置NAT 配置接口 实验一 配置no-pat NAT 测试no-pat 实验二 NAPT配置 NAPT测试 实验三 配置Easy ip 实验四 配置NAT sever 测试Nat Sever 一、NAT的种…

C++类构造函数和析构函数

11.3 类构造函数和析构函数 构造函数&#xff1a;是为了在定义对象时自动初始化其成员变量的值。 构造函数没有返回值&#xff0c;也没有被声明为void类型&#xff1b;因此&#xff0c;构造函数没有声明类型。 11.3.1 声明和定义一个构造函数 构造函数原型&#xff1a;在这…

windows安装配置git和ToriseGit

目录1、下载安装git2、下载安装ToriseGit3、配置ToriseGit4、公司钥生成1、下载安装git 下载地址 安装&#xff1a;所有都按照默认&#xff0c;直接next就行 2、下载安装ToriseGit 下载地址 下图中两个都要下载&#xff0c;第二个是语言包 安装&#xff1a; 1、先安装主程…

C++行为型模式-职责链模式

1.1 基本概念 职责链模式&#xff08;Chain of Responsibility Pattern&#xff09;:避免请求发送者与接收者耦合在一起&#xff0c;让多个对象都有可能接收请求&#xff0c;将这类对象链接成一条链&#xff0c;并沿着这条链传递请求&#xff0c;直到有对象处理它为止。 1.2 …

Neural Collaborative Filtering论文笔记

ABSTRACT 深度神经网络在语音识别、计算机视觉和自然语言处理等方面取得了巨大的成果&#xff0c;但是对于推荐系统尚且缺少。虽然即使有用深度学习作为推荐&#xff0c;但是都是对建模起辅助作用。当涉及到用户和项目之间的交互&#xff0c;都会选择流行的矩阵分解&#xff0…

三、react组件的生命周期

目标 灵活掌握react组件的生命周期以及组件的活动过程。 能够灵活使用react的生命周期 知识点 react的类组件的生命周期分为三个阶段 实例期存在期销毁期 实例期在组件第一次被实例化的时候触发一次&#xff0c;在这个过程中会执行的生命周期函数如下&#xff1a; construct…

2、CKA-简单搭建K8s集群

基础环境&#xff1a; 主机IP资源系统主机名192.168.100.1104核8GCentos8K8s-master192.168.100.1204核8GCentos8K8s-node1192.168.100.1304核8GCentos8K8s-node2 推荐一个小网站&#xff1a;https://labs.play-with-k8s.com/ 其他的废话不多说&#xff0c;直接部署起来先~~ 部…