首页 > 系统相关 >三台Centos7虚拟机部署kubernetes集群服务

三台Centos7虚拟机部署kubernetes集群服务

时间:2023-10-07 10:05:52浏览次数:40  
标签:node kubernetes -- 虚拟机 Centos7 master 10.10 KUBE root


 简介

kubernetes,简称K8s,是用8代替8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。

部署centos7虚拟机

安装Vmware workstation player
下载centos7系统镜像

CentOS-7-x86_64-Minimal-1810.iso

安装centos7虚拟机系统

centos系统最小化安装即可, kubernetes一般是集群部署,建议部署3台及以上,本教程按照3台虚拟主机进行部署。

配置centos7虚拟机系统

1:更新系统,安装必要基础工具(三个虚拟机都需要设置)

yum update                           //更新系统  
yum install -y vim net-tools         //安装基础程序  
systemctl stop firewalld.service     //关闭防火墙  
systemctl disable firewalld.service  //禁止开机启动防火墙

三台Centos7虚拟机部署kubernetes集群服务_nginx

2:分配虚拟机网络静态IP,(centos7配置静态IP,自行百度)

机器IP地址
master 10.10.3.104
node 110.10.3.76
node 210.10.3.109

三台Centos7虚拟机部署kubernetes集群服务_nginx_02

3:配置三台虚拟机的host

[root@master ~]# cat /etc/hosts  
10.10.3.104 master  etcd  node14  
10.10.3.76  node1   node15  
10.10.3.109 node2   node16

三台Centos7虚拟机部署kubernetes集群服务_centos_03

部署Kubernetes

Master节点配置

服务安装
yum -y install epel-release  
yum install -y etcd kubernetes-master ntp flannel

三台Centos7虚拟机部署kubernetes集群服务_centos_04

时间校准
systemctl start ntpd;  
systemctl enable ntpd  
ntpdate ntp1.aliyun.com  
hwclock -w

三台Centos7虚拟机部署kubernetes集群服务_IP_05

配置etcd服务器
1:修改配置
[root@master ~]# grep -v '^#' /etc/etcd/etcd.conf  
ETCD_NAME=default  
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"  
ETCD_LISTEN_CLIENT_URLS="http://localhost:2379,http://10.10.3.104:2379"  
ETCD_ADVERTISE_CLIENT_URLS="http://10.10.3.104:2379"  

[root@master ~]# etcdctl set /atomic.io/network/config '{"Network": "172.16.0.0/16"}'  
{"Network": "172.16.0.0/16"}

三台Centos7虚拟机部署kubernetes集群服务_IP_06

2:启动etcd
systemctl start etcd  
systemctl enable etcd

三台Centos7虚拟机部署kubernetes集群服务_IP_07

3:检查etcd状态
[root@master ~]# etcdctl cluster-health     
member 8e9e05c52164694d is healthy: got healthy result from http://10.10.3.104:2379  
cluster is healthy

三台Centos7虚拟机部署kubernetes集群服务_nginx_08

4:检查etcd集群成员列表,这里只有一台
[root@master ~]# etcdctl member list  
8e9e05c52164694d: name=default peerURLs=http://localhost:2380 clientURLs=http://10.10.3.104:2379 isLeader=true

三台Centos7虚拟机部署kubernetes集群服务_centos_09

配置kube-apiserver
[root@master ~]# grep -v '^#' /etc/kubernetes/config  
KUBE_LOGTOSTDERR="--logtostderr=true"  
KUBE_LOG_LEVEL="--v=0"  
KUBE_ALLOW_PRIV="--allow-privileged=false"  
KUBE_MASTER="--master=http://10.10.3.104:8080"  
  

[root@master ~]# grep -v '^#' /etc/kubernetes/apiserver  
KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"  
KUBE_ETCD_SERVERS="--etcd-servers=http://10.10.3.104:2379"  
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16"  
KUBE_ADMISSION_CONTROL="--admission-control=AlwaysAdmit"  
KUBE_API_ARGS=""

三台Centos7虚拟机部署kubernetes集群服务_nginx_10

配置kube-controller-manager
[root@master ~]# grep -v '^#' /etc/kubernetes/controller-manager  
KUBE_CONTROLLER_MANAGER_ARGS=""

三台Centos7虚拟机部署kubernetes集群服务_IP_11

配置kube-scheduler
[root@master ~]# grep -v '^#' /etc/kubernetes/scheduler  
KUBE_SCHEDULER_ARGS="--address=0.0.0.0"

三台Centos7虚拟机部署kubernetes集群服务_centos_12

启动Master服务
for i in  kube-apiserver kube-controller-manager kube-scheduler;  
do systemctl restart $i;   
systemctl enable $i;  
done

三台Centos7虚拟机部署kubernetes集群服务_centos_13

节点配置以node1示例(包括node1,node2)

配置node网络,本实例采用flannel方式来配置,如需其他方式,请参考Kubernetes官网。
[root@node ~]# grep -v '^#' /etc/sysconfig/flanneld   
FLANNEL_ETCD_ENDPOINTS="http://10.10.3.104:2379"  
FLANNEL_ETCD_PREFIX="/atomic.io/network"  
FLANNEL_OPTIONS=""  
  

[root@node ~]# systemctl restart flanneld

三台Centos7虚拟机部署kubernetes集群服务_centos_14

在master节点查看验证网络信息:

[root@master ~]# etcdctl get /atomic.io/network/config    
{ "Network": "172.16.0.0/16" }  

[root@master ~]# etcdctl ls /atomic.io/network/subnets      //这一步需要启动node节点的flannel服务才能看到效果  
/atomic.io/network/subnets/172.16.69.0-24  
/atomic.io/network/subnets/172.16.6.0-24  

[root@master ~]# etcdctl get /atomic.io/network/subnets/172.16.6.0-24  
{"PublicIP":"10.10.3.76"}  

[root@master ~]# etcdctl get  /atomic.io/network/subnets/172.16.69.0-24  
{"PublicIP":"10.10.3.109"}

三台Centos7虚拟机部署kubernetes集群服务_centos_15

配置kube-proxy
[root@node ~]# grep -v '^#' /etc/kubernetes/config   
KUBE_LOGTOSTDERR="--logtostderr=true"  
KUBE_LOG_LEVEL="--v=0"  
KUBE_ALLOW_PRIV="--allow-privileged=false"  
KUBE_MASTER="--master=http://10.10.3.104:8080"  


[root@node ~]# grep -v '^#' /etc/kubernetes/proxy                    
KUBE_PROXY_ARGS="--bind-address=0.0.0.0"     //这里注意不要写错了,原文连接里面写错了,害我调试了好久

三台Centos7虚拟机部署kubernetes集群服务_centos_16

配置kubelet
[root@node ~]# grep -v '^#' /etc/kubernetes/kubelet   
KUBELET_ADDRESS="--address=127.0.0.1"  
KUBELET_HOSTNAME="--hostname-override=10.10.3.76"    //不同的node节点配置不一样,这里以node1为例  
KUBELET_API_SERVER="--api-servers=http://10.10.3.104:8080"  
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"  
KUBELET_ARGS="--cluster-dns=192.168.90.231"       //配置pod的DNS地址,也可以用8.8.8.8,如果不加该参数,pod启动后会报warning,详见后面备注

三台Centos7虚拟机部署kubernetes集群服务_IP_17

启动Node服务
for i in flanneld kube-proxy kubelet docker;  
do systemctl restart $i;  
systemctl enable $i;  
systemctl status $i ;  
done

三台Centos7虚拟机部署kubernetes集群服务_IP_18

集群测试(在master节点测试)

节点查看
[root@master ~]# kubectl get nodes     
NAME          STATUS    AGE  
10.10.3.76    Ready     18h  
10.10.3.109   Ready     13h

三台Centos7虚拟机部署kubernetes集群服务_centos_19

进行服务测试(命令行方式)
1:建立pod(nginx服务)
kubectl run nginx --image=nginx --port=80  --replicas=2

三台Centos7虚拟机部署kubernetes集群服务_centos_20

2:查看pod服务状态
[root@master ]# kubectl get pods  
NAME                     READY     STATUS    RESTARTS   AGE  
nginx-3449338310-h6l9d   1/1       Running   0          6m  
nginx-3449338310-n4grl   1/1       Running   0          6m  


[root@master ]# kubectl get deployment  
NAME      DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE  
nginx          2          2         2       2       13m

三台Centos7虚拟机部署kubernetes集群服务_IP_21

3:通过端口将应用连接到公网
[root@node14 log]# kubectl expose deployment nginx --port=80 --type=LoadBalancer  
service "nginx" exposed  


[root@node14 log]# kubectl get service  
NAME         CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE  
kubernetes   10.254.0.1       <none>        443/TCP        21h  
nginx        10.254.160.227   <pending>     80:30255/TCP   7s

三台Centos7虚拟机部署kubernetes集群服务_IP_22

4:外网测试
[root@node ~]# curl http://10.10.3.104:80  
Welcome to nginx!  
                   

[root@node ~]# curl http://10.10.3.76:30255  
Welcome to nginx!

三台Centos7虚拟机部署kubernetes集群服务_IP_23

可能遇到的问题

问题1:创建成功但是kubectl get pods 没有结果,错误如下:

三台Centos7虚拟机部署kubernetes集群服务_IP_24

三台Centos7虚拟机部署kubernetes集群服务_nginx_25编辑

解决:编辑/etc/kubernetes/apiserver 去除 KUBE_ADMISSION_CONTROL中的SecurityContextDeny,ServiceAccount,并重启kube-apiserver.service服务

问题2:pod-infrastructure:latest镜像下载失败,错误如下:

三台Centos7虚拟机部署kubernetes集群服务_IP_26

三台Centos7虚拟机部署kubernetes集群服务_IP_27编辑

解决:安装rhsm服务,如下:

yum install *rhsm* -y

三台Centos7虚拟机部署kubernetes集群服务_nginx_28

问题3:登陆容器报错,如下图:

三台Centos7虚拟机部署kubernetes集群服务_IP_29

三台Centos7虚拟机部署kubernetes集群服务_nginx_30编辑

解决:10250是kubelet的端口,在Node上检查/etc/kubernetes/kubelet ,KUBELET_ADDRESS需要修改为node ip

问题4:创建pod出错,错误如下图:

三台Centos7虚拟机部署kubernetes集群服务_centos_31

三台Centos7虚拟机部署kubernetes集群服务_IP_32编辑

解决:Node节点配置kubelet的时候加上"--cluster-dns=8.8.8.8", 见文章上面的node配置信息

centos7.4安装配置使用简介Kubernetes(k8s)

最常用的kubectl命令



标签:node,kubernetes,--,虚拟机,Centos7,master,10.10,KUBE,root
From: https://blog.51cto.com/u_16236290/7732775

相关文章

  • windows下vscode连接linux(虚拟机)进行(伪)远程开发
    免责声明本文乃至本系列是对网络上传播的内容进行整理以梳理流程,且因为篇幅限制会精简内容,适合面向具有计算机类基础知识的人群,本文内容较为笼统,只有大体上的逻辑,具体的细节肯定是官网上写的准而全,望读者能从官网上获取最新的信息,而不是这一篇参考性流程开源声明本文章遵......
  • Java 平台和 Java 虚拟机(JVM)
    Java平台是一个面向多个操作系统的开发和运行环境,提供了一套完整的软件开发工具和运行时环境。它包括Java编程语言、Java开发工具(如编译器、调试器等)和Java运行时环境(包括Java虚拟机和类库)。Java虚拟机(JavaVirtualMachine,JVM)是Java平台的核心组件之一,它是一个可执行的程序,负责......
  • linux虚拟机网络配置
    我的装机环境是centos7版本【1】安装虚拟机vmware之后,点击菜单栏编辑——虚拟网络编辑器,点击Vmnet8,查看子网IP地址段【2】进入主机目录/etc/sysconfig/network-scripts,编辑ifcfg-ens33[root@xxpcV7-01network-scripts]#catifcfg-ens33TYPE=EthernetPROXY_METHOD=noneBR......
  • 离线安装Kubernetes(K8s)方法
    1简述1.1搭建方法介绍 K8s有两种搭建方式:1.使用K8s官方发布的二进制包搭建环境2.使用Kubeadm搭建(推荐该种方式) 本文的K8s搭建流程均基于Kubeadm方式1.2Kubeadm简介 Kubeadm是一款旨在为创建Kubernetes集群提供最佳实践“快速路径”的工具。它执行必要的操作,以用户......
  • centos7 中 用户名和主机名消失,显示-bash-4.2解放方法
     001、问题,centos7中中用户名和主机名消失,显示-bash-4.2,如下:-bash-4.2$ 002、产生原因配置文件丢失或意外删除。 003、解决方法1-bash-4.2$echo"exportPS1='[\u@\h\W]\$'">>~/.bash_profile-bash-4.2$source~/.bash_profile[liujiaxin01@pc1~]$ls[liuj......
  • 运维 | 如何解决 centos7.x 上 curl、wget 等工具命令失效问题
    运维|如何解决centos7.x上curl、wget等工具命令失效问题问题描述系统在初始化的时候已经安装了curl工具包,但是某一天突然在终端使用curl命令时发现提示-bash:curl:commandnotfound以为系统中并没有安装curl工具,于是输入命令重新安装yum-yinstallcurl#......
  • 【VMware篇】3-ESXi安装Windows Server2019虚拟机和更改配置
    第1章前言   本文主要介绍Dell服务器安装ESXI后虚拟机的安装,安装例子:WindowsServer2019。1.Windowsserver2019            Windowsserver2019是微软公司研发的服务器操作系统,WindowsServer2019包括三个许可版本:DatacenterEdition(数据中心版):适用于高虚拟化......
  • 【VMware篇】5-ESXi导入、导出虚拟机和模板
    第1章、前言本文主要介绍封装系统导出为模板,以WindowsServer2019为例。第2章、导出系统为模板1、打开运行窗口输入“sysprep”点击确定。2、选中“sysprep”鼠标右键“以管理员身份运行”。3、勾选“通用”,关机选项选择“关机”,点击确定。4、选中server2019 鼠标右键选择“导出......
  • 服务器nf_conntrack(CT)表满导致虚拟机丢包
    现象虚拟机各种奇怪丢包(TCP的连接)然后看到虚拟机所在CVK的dmesg里,有如下:dmesgkern-lerr,warn-T(/var/log/messages里也有)提示:nf_conntrack:nf_conntrack:tablefull,droppingpacket从日志看意思是:内核netfilter模块conntrack相关参数配置不合理,导致新......
  • ARM 架构的 JVM(Java 虚拟机)最高的免费版本是 OpenJDK 17
    目前(截至2023年9月),ARM架构的JVM(Java虚拟机)最高的免费版本是OpenJDK17。OpenJDK17是JavaSE17的开源实现,由Oracle和其他开源贡献者共同维护。你可以在ARM架构的设备上安装和使用OpenJDK17,它包含了JavaSE17的所有功能和改进。要在ARM架构的设备上安装Op......