ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

容器编排——搭建kubernetes单机

2021-07-18 16:57:45  阅读:217  来源: 互联网

标签:systemctl 查看 kubernetes 单机 执行命令 编排 自启 开机 kube


目录

1、组件介绍:

(1)Master组件:

① Etcd:

② API server:

③ Controller Manager:

④ Scheduler:

(2)Node组件:

① Kubelet:

② Proxy:

2、关闭selinux:

3、关闭防火墙:

4、安装etcd与配置:

(1)安装etcd:

(2)修改etcd.conf文件:

(3)操作etcd服务:

① 启动:

② 停止:

③ 查看状态:

④ 开机自启:

⑤ 关闭开机自启:

5、安装flannel与配置:

(1)安装flannel:

(2)修改flanneld配置:

(3)设置环境变量:

(4)操作flannel服务:

① 启动:

② 停止:

③ 查看状态:

④ 开机自启:

⑤ 关闭开机自启:

6、安装k8s:

(1)安装k8s:

(2)修改docker配置文件:

 (3)修改k8s的apiservce配置文件:

(4)操作docker服务:

① 启动:

② 停止:

③ 查看状态:

④ 开机自启:

⑤ 关闭开机自启:

(5)操作master的kube-apiserver服务:

① 启动:

② 停止:

③ 查看状态:

④ 开机自启:

⑤ 关闭开机自启:

(6)操作master的kube-controller-manager服务:

① 启动:

② 停止:

③ 查看状态:

④ 开机自启:

⑤ 关闭开机自启:

(7)操作master的kube-scheduler服务:

① 启动:

② 停止:

③ 查看状态:

④ 开机自启:

⑤ 关闭开机自启:

(8)操作node的kubelet服务:

① 启动:

② 停止:

③ 查看状态:

④ 开机自启:

⑤ 关闭开机自启:

(9)操作node的kube-proxy服务:

① 启动:

② 停止:

③ 查看状态:

④ 开机自启:

⑤ 关闭开机自启:

(10)检查k8s启动成功:

7、查看flannel0和docker0是否同网络:

8、下载pod启动需要镜像:

(1)搜索镜像:

(2)下载镜像:

(3)自定义镜像:

9、处理redhat-ca.crt的bug:

10、设置转发:

(1)临时设置:

(2)永久设置:

① 配置文件:

② 加载文件:

③ 查看参数:

11、操作指令:

(1)kubernets指令:

① 查看已部署列表:

② 查看服务列表:

③ 彻底删除pod:

12、手动命令部署nginx服务示例:

(1)运行一个镜像:

(2)创建一个服务并暴露到集群外:

(3)查看服务列表:

(4)查看服务详细信息:

(5)在宿主机内访问:


1、组件介绍:

(1)Master组件:

① Etcd:

etcd是一个数据库,它的目标是构建一个高可用的分布式键值数据库,它是基于GO语言实现。在分布式系统中,各种服务的配置信息的管理分享,服务的发现是一个很基本同时也是很重要的问题。在K8s中用于持久化存储集群中所有的资源对象,如Node、Service、Pod、RC、Namespace等;

② API server:

API Server提供了操作etcd的封装接口API,这些API基本上都是集群中资源对象的增删改查及监听资源变化的接口。它提供了资源对象的唯一操作入口,其他所有组件都必须通过它提供的API来操作资源数据,通过对相关的资源数据“全量查询”+“变化监听”,这些组件可以很“实时”地完成相关的业务功能。

③ Controller Manager:

集群内部的管理控制中心,其主要目的是实现Kubernetes集群的故障检测和恢复的自动化工作,比如根据RC的定义完成Pod的复制或移除,以确保Pod实例数符合RC副本的定义;根据Service与Pod的管理关系,完成服务的Endpoints对象的创建和更新;其他诸如Node的发现、管理和状态监控、死亡容器所占磁盘空间及本地缓存的镜像文件的清理等工作也是由Controller Manager完成的。

④ Scheduler:

集群中的调度器,负责Pod在集群节点中的调度分配。

(2)Node组件:

① Kubelet:

负责本Node节点上的Pod的创建、修改、监控、删除等全生命周期管理,同时Kubelet定时“上报”本Node的状态信息到API Server里。

② Proxy:

实现了Service的代理与软件模式的负载均衡器

2、关闭selinux:

集群中所有服务器,修改/etc/selinux/config文件中SELINUX=的值为:disabled,然后重新启动服务器:

3、关闭防火墙:

集群中所有服务器,执行以下命令:

关闭防火墙:systemctl stop firewalld.service

关闭防火墙自启:systemctl disable firewalld.service

4、安装etcd与配置:

(1)安装etcd:

执行命令:yum install -y etcd

(2)修改etcd.conf文件:

修改文件:/etc/etcd/etcd.conf,修改一下参数:

(3)操作etcd服务:

① 启动:

执行命令:systemctl start etcd

② 停止:

执行命令:systemctl stop etcd

③ 查看状态:

执行命令:systemctl status etcd

④ 开机自启:

执行命令:systemctl enable etcd

⑤ 关闭开机自启:

执行命令:systemctl disable etcd

5、安装flannel与配置:

(1)安装flannel:

执行命令:yum install -y flannel

(2)修改flanneld配置:

修改文件:/etc/sysconfig/flanneld,以下参数:

FLANNEL_ETCD_ENDPOINTS="http://192.168.137.160:2379"

FLANNEL_ETCD_PREFIX="/k8s/network"

FLANNEL_OPTIONS="--iface=ens33"  #设置自己的通信物理网卡

说明:IP地址为master的IP地址;FLANNEL_ETCD_PREFIX要与下面设置的环境变量相一致。

查看服务器物理网卡的命令为:

ls /sys/class/net/ | grep -v "`ls /sys/devices/virtual/net/`"

(3)设置环境变量:

配置flannel网段的IP:

执行命令:

etcdctl set /flannel/network/config '{ "Network":"172.16.0.0/16" }'

(4)操作flannel服务:

① 启动:

执行命令:systemctl start flanneld

② 停止:

执行命令:systemctl stop flanneld

③ 查看状态:

执行命令:systemctl status flanneld

④ 开机自启:

执行命令:systemctl enable flanneld

⑤ 关闭开机自启:

执行命令:systemctl disable flanneld

6、安装k8s:

(1)安装k8s:

执行命令:yum install -y kubernetes

说明:通过该命令安装的kubernetes,会自动安装docker环境,不需要手动安装docker了。如果是自己下载软件包安装k8s,那么就需要自己先安装好docker环境,然后再安装k8s软件包了。

(2)修改docker配置文件:

编辑文件:/etc/sysconfig/docker,修改参数:

OPTIONS=’--selinux-enabled=false --insecure-registry gcr.io’

 (3)修改k8s的apiservce配置文件:

编辑文件:/etc/kubernetes/apiserver,修改参数:KUBE_ADMISSION_CONTROL,去掉该值中的:ServiceAccount

(4)操作docker服务:

① 启动:

执行命令:systemctl start docker

② 停止:

执行命令:systemctl stop docker

③ 查看状态:

执行命令:systemctl status docker

④ 开机自启:

执行命令:systemctl enable docker

⑤ 关闭开机自启:

执行命令:systemctl disable docker

(5)操作master的kube-apiserver服务:

① 启动:

执行命令:systemctl start kube-apiserver

② 停止:

执行命令:systemctl stop kube-apiserver

③ 查看状态:

执行命令:systemctl status kube-apiserver

④ 开机自启:

执行命令:systemctl enable kube-apiserver

⑤ 关闭开机自启:

执行命令:systemctl disable kube-apiserver

(6)操作master的kube-controller-manager服务:

① 启动:

执行命令:systemctl start kube-controller-manager

② 停止:

执行命令:systemctl stop kube-controller-manager

③ 查看状态:

执行命令:systemctl status kube-controller-manager

④ 开机自启:

执行命令:systemctl enable kube-controller-manager

⑤ 关闭开机自启:

执行命令:systemctl disable kube-controller-manager

(7)操作master的kube-scheduler服务:

① 启动:

执行命令:systemctl start kube-scheduler

② 停止:

执行命令:systemctl stop kube-scheduler

③ 查看状态:

执行命令:systemctl status kube-scheduler

④ 开机自启:

执行命令:systemctl enable kube-scheduler

⑤ 关闭开机自启:

执行命令:systemctl disable kube-scheduler

(8)操作node的kubelet服务:

① 启动:

执行命令:systemctl start kubelet

② 停止:

执行命令:systemctl stop kubelet

③ 查看状态:

执行命令:systemctl status kubelet

④ 开机自启:

执行命令:systemctl enable kubelet

⑤ 关闭开机自启:

执行命令:systemctl disable kubelet

(9)操作node的kube-proxy服务:

① 启动:

执行命令:systemctl start kube-proxy

② 停止:

执行命令:systemctl stop kube-proxy

③ 查看状态:

执行命令:systemctl status kube-proxy

④ 开机自启:

执行命令:systemctl enable kube-proxy

⑤ 关闭开机自启:

执行命令:systemctl disable kube-proxy

(10)检查k8s启动成功:

执行命令:kubectl get nodes

7、查看flannel0和docker0是否同网络:

执行命令:ip a,查看flannel0、docker0的IP是否在同一个网段,如果不在,修改flannel当初设置的环境变量,然后重新启动flannel。

8、下载pod启动需要镜像:

(1)搜索镜像:

执行命令:docker search pause-amd64

(2)下载镜像:

执行命令:docker pull docker.io/mirrorgooglecontainers/pause-amd64:3.0

(3)自定义镜像:

将下载到本地的镜像,自定打包以下tag:

执行命令:

docker tag docker.io/mirrorgooglecontainers/pause-amd64:3.0 gcr.io/google_containers/pause-amd64:3.0

9、处理redhat-ca.crt的bug:

下载软件包,进入到一个临时文件夹中,执行命令:

wget http://mirror.centos.org/centos/7/os/x86_64/Packages/python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm

说明:如果没有wget的,也可以手动下载该软件包。

执行命令:

rpm2cpio python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm | cpio -iv --to-stdout ./etc/rhsm/ca/redhat-uep.pem | tee /etc/rhsm/ca/redhat-uep.pem

10、设置转发:

(1)临时设置:

执行命令:iptables -P FORWARD ACCEPT

说明:如果不设置转发,在k8s中启动的service只能在宿主机本地访问nodeIp:nodePort,可以,远程访问不可以。

注意:如果服务器重启了,需要重新执行以下该命令,否则还是不能通过nodeIp:nodePort进行远程访问。因此建议使用永久设置。

(2)永久设置:

① 配置文件:

编辑配置文件:/etc/sysctl.conf,增加一行:net.ipv4.ip_forward=1

② 加载文件:

重新加载一下配置文件,执行命令:sysctl -p

③ 查看参数:

查看一下最新参数,执行命令:sysctl -a |grep "ip_forward"

11、操作指令:

(1)kubernets指令:

① 查看已部署列表:

执行命令:kubectl get deployments

② 查看服务列表:

执行命令:kubectl get services

③ 彻底删除pod:

执行命令:kubectl delete deployment my-nginx

说明:my-nginx,为服务名。

12、手动命令部署nginx服务示例:

通过手动命令构建服务的只是用来体验可以,一般都是用yaml文件来记录服务的构件过程的,这样可以持久化服务构建过程,方便查看。

(1)运行一个镜像:

执行命令:kubectl run my-nginx --image=nginx --port=80

(2)创建一个服务并暴露到集群外:

执行命令:kubectl expose deployment/my-nginx --type="NodePort" --port 80

(3)查看服务列表:

执行命令:kubectl get services

(4)查看服务详细信息:

执行命令:kubectl describe service/my-nginx

(5)在宿主机内访问:

在宿主机本地通过访问nginx的Endpoints,即可访问:

(6)在同网段服务器访问:

在与宿主机同网段的服务器内访问nginx的nodePort端口号,IP为宿主机的IP地址,即可访问:

标签:systemctl,查看,kubernetes,单机,执行命令,编排,自启,开机,kube
来源: https://blog.csdn.net/LSY_CSDN_/article/details/118879253

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有