在Linux中进行K8s部署

准备工作

部署K8s集群对服务器的要求:

1)3台以上装有CentOS7.7版本以上的64位系统的服务器;

2)每台服务器的硬件配置都是内存最少2G,CPU至少双核,硬盘至少30GB;

3)集群中所有服务器之间网络互通;

4)可以访问外网,需要拉取镜像;

5)禁止swap分区。

配置环境

第一步,关闭防火墙和selinux。

命令:systemctl stop firewalld

systemctl disable firewalld

# 永久关闭selinux

sed -i 's/enforcing/disabled/' /etc/selinux/config

# 临时禁用selinux

setenforce 0

第二步,关闭swap分区。

# 临时关闭

命令:swapoff -a

# 永久关闭

命令:sed  -ri  's/.*swap.*/#&/'  /etc/fstab

第三步,添加主机名与IP对应关系(三台主机都执行)。

命令:echo '''x.x.x.108 k8s-master-108 y.y.y.107 k8s-node-107 z.z.z.105 k8s-node-105''' >> /etc/hosts

第四步,各自修改主机名。

命令:hostnamectl set-hostname k8s-master-108

hostnamectl set-hostname k8s-node-107

hostnamectl set-hostname k8s-node-105

第五步,设置网桥参数(三台主机都执行)。

以下net.ipv4.ip_forward如存在=0,修改为1即可

命令:cat > /etc/sysctl.d/k8s.conf << EOF

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

EOF

sysctl --system

安装docker18.09.9(三台服务器都一样)

第一步,卸载旧版本docker。

若系统中已安装旧版本docker,则需要卸载旧版本docker以及与旧版本docker相关的依赖项。

命令:yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

第二步,安装gcc依赖。

命令:yum -y install gcc gcc-c++

第三步,使用Docker仓库进行安装。

在新主机上首次安装Docker Engine-Community之前,需要设置Docker仓库。之后,可以从仓库安装和更新Docker。

# 设置仓库,安装所需的软件包。

命令:yum install -y yum-utils device-mapper-persistent-data lvm2

# 设置稳定的仓库,使用官方源地址(比较慢)

命令:yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# 可以选择国内的一些源地址,如阿里云

命令:yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 可以选择国内的一些源地址,如清华大学源

命令:yum-config-manager --add-repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo

第四步,安装Docker Engine-Community。

# 安装特定版本的Docker Engine-Community

# 列出存储库中可用的版本并按版本号从高到低进行排序

命令:yum list docker-ce --showduplicates | sort -r

# 通过其完整的软件包名称安装特定版本,如docker-ce-18.09.9。

命令:yum install docker-ce-18.09.9 docker-ce-cli-18.09.9 containerd.io

第五步,启动Docker。

命令:systemctl enable docker

systemctl start docker

systemctl restart docker

第六步,验证Docker Engine-Community是否正确安装。

命令:docker version

docker run hello-world

若结果显示“Hello from Docker!”,则说明Docker Engine-Community正确安装。

部署Kubernetes Master

第一步,添加k8s阿里云YUM软件源。

命令:cat <<EOF > /etc/yum.repos.d/kubernetes.repo

[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

第二步,安装kubeadmkubelet和kubectl

命令:yum makecache fast

yum -y install kubelet-1.16.0 kubeadm-1.16.0 kubectl-1.16.0

systemctl start kubelet

systemctl enable kubelet

第三步,初始化k8s。

命令:kubeadm init --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.16.0 --apiserver-advertise-address x.x.x.108 --token-ttl 0

若结果显示“Your Kubernetes control-plane has initialized successfully!”,则说明安装成功,然后根据提示,分别执行下面的命令:

mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config

第四步,记住node加入集群的命令。

执行“kubeadm init”成功后,会返回node节点加入集群的命令,后面要在node节点上执行,需要保存下来。

# 获取node加入集群的命令

命令:kubeadm token create --print-join-command

# 查看此时master的状态

命令:kubectl get nodes

若此时master处于NotReady状态,则暂时不用管。

部署Kubernetes Node

第一步,添加k8s阿里云YUM软件源。

命令:cat <<EOF > /etc/yum.repos.d/kubernetes.repo

[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

第二步,安装kubeadmkubelet和kubectl

命令:yum makecache fast

yum -y install kubelet-1.16.0 kubeadm-1.16.0 kubectl-1.16.0

systemctl start kubelet

systemctl enable kubelet

第三步,加入集群。

# 可以登录master节点,获取node加入集群的命令

命令:kubeadm token create --print-join-command

# 可以登录node节点,加入集群

命令:kubeadm join x.x.x.108:6443 --token zerect.sbegb9a9773ak4t1     --discovery-token-ca-cert-hash sha256:39996173db4cb75ecae91263b782de50ba77b7ed866313f2ff9ed03e488088d8

# 加入集群成功后,可以登录master节点,查看是否有加入的节点并查看此时master的状态。

命令:kubectl get nodes

部署容器网络插件(在master上安装)

第一步,登录master节点,新建fannel配置文件。

在/root文件夹中新建kube-flannel.yml文件,然后登录网址:xw_yaml/kube-flannel.yml at main · xuwei777/xw_yaml · GitHub,复制粘贴代码到新建的kube-flannel.yml文件中。

第二步,安装fannel

命令:kubectl apply -f kube-flannel.yml

kubectl get pods -n kube-system

第三步,查看master的状态。

命令:kubectl get nodes

若此时master处于Ready状态,则说明fannel安装成功。

k8s常用命令

# 查看pod,service,endpoints,secret等的状态

# 查看详细信息可以加上-o wide

# 其他namespace的指定为-n namespace名

命令:kubectl get 组件名

kubectl get -o wide 组件名

kubectl get -n namespace名

# 创建和变更一个yaml文件内资源,也可以是目录,目录内包含一组yaml文件

命令:kubectl apply -f xxx.yaml

# 删除一个yaml文件内资源,也可以是目录,目录内包含一组yaml文件

命令:kubectl delete -f xxx.yaml

# 查看资源状态

命令:kubectl get pod

kubectl describe pod pod名

# 查看pod日志,用于pod状态未就绪的故障排查

命令:kubectl get pod

kubectl logs pod名

# 查看node节点或者是pod资源(cpu,内存资源)使用情况

命令:kubectl top 组件名

# 进入pod内部

命令:kubectl get pod

kubectl exec -ti pod名 /bin/bash

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340