yum部署kubernetes(k8s)集群、k8s常用资源管理

这篇具有很好参考价值的文章主要介绍了yum部署kubernetes(k8s)集群、k8s常用资源管理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、环境搭建

1、准备环境

1)计算机说明,建议系统版本7.4或者7.6

2)修改所有主机的计算机名设置host文件

 2、安装master节点

1)安装etcd配置etcd

2)安装k8s-master节点

3)配置apiserver

4)配置controller和scheduler

5)启动k8s服务

3、安装k8s-master上的node

1)安装node

2)配置kubelet

3)启动kubeket启动自动启动docker服务

4)启动kubelet-proxy

5)检查node节点

4、安装配置k8s-node1节点

1)安装node

2)node1连接k8s-master

3)配置kubelet

4)启动服务

5)在master节点检测node节点状态

5、安装k8s-node2节点

1)安装node

2)node1连接k8s-master

3)配置kubelet

4)启动服务

6、为所有node节点配置flannel网络

7、配置docker开启加载防火墙规则允许转发数据

二、k8s常用资源管理

1、创建一个pod

2、pod管理

3、pod操作


一、环境搭建

1、准备环境
1)计算机说明,建议系统版本7.4或者7.6

主机名

IP地址

角色

硬件

k8s-master

192.168.147.138

Master,node

Etcd、apiserver、controlor-manager、scheduler、kube-proxy、docker、registry

K8s-node1

192.168.147.139

Node

Kubletel、kube-proxy、docker

K8s-node2

192.168.147.140

Node

Kubletel、kube-proxy、docker

2)修改所有主机的计算机名设置host文件
[root@slave ~]# hostnamectl set-hostname k8s-master
[root@slave ~]# bash
[root@k8s-master ~]# vim /etc/hosts
192.168.147.138 k8s-master
192.168.147.139 k8s-node1
192.168.147.140 k8s-node2
[root@k8s-master ~]# scp /etc/hosts 192.168.147.139:/etc/hosts
[root@k8s-master ~]# scp /etc/hosts 192.168.147.140:/etc/hosts
 2、安装master节点
1)安装etcd配置etcd
[root@k8s-master ~]# yum install etcd -y
[root@k8s-master ~]# cp /etc/etcd/etcd.conf /etc/etcd/etcd.conf.bak
[root@k8s-master ~]# vim /etc/etcd/etcd.conf

  6 ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"

 21 ETCD_ADVERTISE_CLIENT_URLS="http://192.168.147.138:2379"
[root@k8s-master ~]# systemctl enable etcd
Created symlink from /etc/systemd/system/multi-user.target.wants/etcd.service to /usr/lib/systemd/system/etcd.service.
2)安装k8s-master节点
[root@k8s-master ~]# yum -y install kubernetes-master.x86_64 
3)配置apiserver
[root@k8s-master ~]# vim /etc/kubernetes/apiserver
8 KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"		//修改监听IP地址
12 KUBE_API_PORT="--port=8080"							//监听端口
16 KUBELET_PORT="--kubelet-port=10250"					//kubelet监听端口
19 KUBE_ETCD_SERVERS="--etcd-servers=http://192.168.147.138:2379"	//连接etcd
24 KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"
4)配置controller和scheduler
[root@k8s-master ~]# vim /etc/kubernetes/config
 22 KUBE_MASTER="--master=http://192.168.147.138:8080"
5)启动k8s服务
[root@k8s-master ~]# systemctl start kube-apiserver.service 
[root@k8s-master ~]#  systemctl start kube-controller-manager.service
[root@k8s-master ~]# systemctl start kube-scheduler.service
[root@k8s-master ~]#  systemctl enable kube-apiserver.service
Created symlink from /etc/systemd/system/multi-user.target.wants/kube-apiserver.service to /usr/lib/systemd/system/kube-apiserver.service.
[root@k8s-master ~]# systemctl enable kube-controller-manager.service
Created symlink from /etc/systemd/system/multi-user.target.wants/kube-controller-manager.service to /usr/lib/systemd/system/kube-controller-manager.service.
[root@k8s-master ~]# systemctl enable kube-scheduler.service
Created symlink from /etc/systemd/system/multi-user.target.wants/kube-scheduler.service to /usr/lib/systemd/system/kube-scheduler.service.

6)检查节点安装都是健康的

[root@k8s-master ~]#  kubectl get componentstatus
NAME                 STATUS    MESSAGE             ERROR
controller-manager   Healthy   ok                  
scheduler            Healthy   ok                  
etcd-0               Healthy   {"health":"true"}
3、安装k8s-master上的node
1)安装node
[root@k8s-master ~]# yum install kubernetes node.x86_64
2)配置kubelet
[root@k8s-master ~]# vim /etc/kubernetes/kubelet
5 KUBELET_ADDRESS="--address=192.168.147.138"						//监听IP地址
11 KUBELET_HOSTNAME="--hostname-override=k8s-master"				//监听计算机名
14 KUBELET_API_SERVER="--api-servers=http://192.168.147.138:8080"		//监听apiserver端口
3)启动kubeket启动自动启动docker服务
[root@k8s-master ~]# systemctl start kubelet
[root@k8s-master ~]# systemctl enable kubelet
4)启动kubelet-proxy
[root@k8s-master ~]# systemctl start kube-proxy
[root@k8s-master ~]# systemctl enable kube-proxy
5)检查node节点
[root@k8s-master ~]# kubectl get nodes
NAME         STATUS    AGE
k8s-master   Ready     2m
4、安装配置k8s-node1节点
1)安装node
[root@k8s-node1 ~]# yum install kubernetes node.x86_64
2)node1连接k8s-master
[root@k8s-node1 ~]# vim /etc/kubernetes/config
22 KUBE_MASTER="--master=http://192.168.147.138:8080"
3)配置kubelet
[root@k8s-node1 ~]# vim /etc/kubernetes/kubelet
5 KUBELET_ADDRESS="--address=192.168.147.140
11 KUBELET_HOSTNAME="--hostname-override=k8s-node1"
15 KUBELET_API_SERVER="--api-servers=http://192.168.147.138:8080"
4)启动服务
[root@k8s-node1 ~]# systemctl start kubelet
[root@k8s-node1 ~]# systemctl start kube-proxy
[root@k8s-node1 ~]# systemctl enable kubelet
[root@k8s-node1 ~]# systemctl enable kube-proxy
5)在master节点检测node节点状态
[root@k8s-master ~]# kubectl get nodes
NAME         STATUS    AGE
k8s-master   Ready     50m
k8s-node1    Ready     15s				//发现节点node1
5、安装k8s-node2节点
1)安装node
[root@k8s-node2 ~]# yum install kubernetes node.x86_64
2)node1连接k8s-master
[root@k8s-node2 ~]# vim /etc/kubernetes/config
22 KUBE_MASTER="--master=http://192.168.147.138:8080"
3)配置kubelet
[root@k8s-node2 ~]# vim /etc/kubernetes/kubelet
5 KUBELET_ADDRESS="--address=192.168.147.140"
11 KUBELET_HOSTNAME="--hostname-override=k8s-node2"
15 KUBELET_API_SERVER="--api-servers=http://192.168.147.138:8080"
4)启动服务
[root@k8s-node2 ~]# systemctl start kubelet

[root@k8s-node2 ~]# systemctl start kube-proxy

[root@k8s-node2 ~]# systemctl enable kubelet

[root@k8s-node2 ~]# systemctl enable kube-proxy
[root@k8s-master ~]# kubectl get nodes
NAME         STATUS    AGE
k8s-master   Ready     16m
k8s-node1    Ready     11s
k8s-node2    Ready     12s
6、为所有node节点配置flannel网络

1)在k8s-master节点安装flannel

[root@k8s-master ~]# yum install flannel -y
[root@k8s-master ~]# vim /etc/sysconfig/flanneld
4 FLANNEL_ETCD_ENDPOINTS=http://192.168.147.138:2379

[root@k8s-master ~]# etcdctl set /atomic.io/network/config '{ "Network": "172.16.0.0/16" }'	//配置网络
{ "Network": "172.16.0.0/16" }

[root@k8s-master ~]# systemctl start flanneld
[root@k8s-master ~]# systemctl enable flanneld
[root@k8s-master ~]# ifconfig		//查看多一个网络

flannel0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1472
        inet 172.16.63.0  netmask 255.255.0.0  destination 172.16.63.0
        inet6 fe80::41de:6f31:283f:fd63  prefixlen 64  scopeid 0x20<link>
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 500  (UNSPEC)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1  bytes 48 (48.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


[root@k8s-master ~]# systemctl restart docker		//重新启动docker服务和flannel网络一至
[root@k8s-master ~]# systemctl enable docker
flannel0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1472
        inet 172.16.63.0  netmask 255.255.0.0  destination 172.16.63.0
        inet6 fe80::41de:6f31:283f:fd63  prefixlen 64  scopeid 0x20<link>
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 500  (UNSPEC)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3  bytes 144 (144.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

2)配置node1节点flannel网络

[root@k8s-node1 ~]# yum install flannel -y
[root@k8s-node1 ~]# vim /etc/sysconfig/flanneld
4 FLANNEL_ETCD_ENDPOINTS=http://192.168.147.138:2379
[root@k8s-node1 ~]# systemctl start flanneld
[root@k8s-node1 ~]# systemctl enable flanneld
[root@k8s-node1 ~]# systemctl restart docker
[root@k8s-node1 ~]# systemctl enable docker

3)安装node2节点flannel网络

[root@k8s-node2 ~]# yum install flannel -y

[root@k8s-node2 ~]# vim /etc/sysconfig/flanneld
4 FLANNEL_ETCD_ENDPOINTS=http://192.168.200.112:2379

[root@k8s-node2 ~]# systemctl start flanneld
[root@k8s-node2 ~]# systemctl enable flanneld

[root@k8s-node2 ~]# systemctl restart docker
[root@k8s-node2 ~]# systemctl enable docker
[root@k8s-master ~]# kubectl get nodes
NAME         STATUS    AGE
k8s-master   Ready     21m
k8s-node1    Ready     5m
k8s-node2    Ready     5m

4)测试docker容器跨宿主机通信

[root@k8s-node1 ~]# iptables -P FORWARD ACCEPT		//允许转发数据
[root@k8s-node2 ~]# iptables -P FORWARD ACCEPT
[root@k8s-master ~]# iptables -P FORWARD ACCEPT

[root@k8s-master ~]# docker run -it busybox		//下载镜像
/ # ping 172.16.63.1		//测试和其他docker宿主机之间通信

PING 172.16.63.1 (172.16.63.1): 56 data bytes
64 bytes from 172.16.63.1: seq=0 ttl=64 time=0.088 ms
64 bytes from 172.16.63.1: seq=1 ttl=64 time=0.131 ms
7、配置docker开启加载防火墙规则允许转发数据

1)配置k8s-master节点

[root@k8s-master ~]# vim /usr/lib/systemd/system/docker.service
18 ExecStartPort=/usr/sbin/iptables -P FORWARD ACCEPT  #手动添加

[root@k8s-master ~]# systemctl daemon-reload
[root@k8s-master ~]# systemctl restart docker

2)配置k8s-node1节点

[root@k8s-node1 ~]# vim /usr/lib/systemd/system/docker.service
18 ExecStartPort=/usr/sbin/iptables -P FORWARD ACCEPT

[root@k8s-node1 ~]# systemctl daemon-reload
[root@k8s-node1 ~]# systemctl restart docker

3)配置k8s-node2节点

[root@k8s-node2 ~]# vim /usr/lib/systemd/system/docker.service

18 ExecStartPort=/usr/sbin/iptables -P FORWARD ACCEPT
[root@k8s-node2 ~]# systemctl daemon-reload
[root@k8s-node2 ~]# systemctl restart docker

二、k8s常用资源管理

1、创建一个pod

1)创建yuml文件

[root@k8s-master ~]# mkdir k8s
[root@k8s-master ~]# vim ./k8s/nginx.yaml
apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    app: web
spec:
  containers:
    - name: nginx
      image: nginx:1.13
      ports:
        - containerPort: 80

2)创建容器

方法一.  yum安装

[root@k8s-master ~]#yum install *rhsm*


执行命令:

[root@k8s-master ~]#wget http://mirror.centos.org/centos/7/os/x86_64/Packages/python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm

[root@k8s-master ~]#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    
前两个命令会生成/etc/rhsm/ca/redhat-uep.pem文件.     

[root@k8s-master ~]# docker pull registry.access.redhat.com/rhel7/pod-infrastructure:latest
latest: Pulling from rhel7/pod-infrastructure
26e5ed6899db: Pull complete 
66dbe984a319: Pull complete 
9138e7863e08: Pull complete 
Digest: sha256:47db25d46e39f338142553f899cedf6b0ad9f04c6c387a94b6b0964b7d1b7678
Status: Downloaded newer image for registry.access.redhat.com/rhel7/pod-infrastructure:latest
[root@k8s-master ~]# kubectl create -f ./k8s/nginx.yaml

3)查看所有pod创建运行状态

[root@k8s-master ~]# kubectl get pod
NAME      READY     STATUS              RESTARTS   AGE
nginx     0/1       ContainerCreating   0          32s

4)查看指定pod资源

[root@k8s-master ~]# kubectl get pod nginx
NAME      READY     STATUS              RESTARTS   AGE
nginx     0/1       ContainerCreating   0          20m

5)查看pod运行的详细信息

[root@k8s-master ~]# kubectl describe pod nginx
Name:		nginx
Namespace:	default
Node:		k8s-node2/192.168.147.140
Start Time:	Mon, 27 Dec 2021 22:35:49 +0800
Labels:		app=web
Status:		Pending
IP:		
Controllers:	<none>
Containers:
  nginx:
    Container ID:		
    Image:			nginx:1.13
    Image ID:			
    Port:			80/TCP
    State:			Waiting
      Reason:			ContainerCreating
    Ready:			False
    Restart Count:		0
    Volume Mounts:		<none>
    Environment Variables:	<none>
Conditions:
  Type		Status
  Initialized 	True 
  Ready 	False 
  PodScheduled 	True 
No volumes.
QoS Class:	BestEffort
Tolerations:	<none>
Events:
  FirstSeen	LastSeen	Count	From			SubObjectPath	Type		Reason		Message
  ---------	--------	-----	----			-------------	--------	------		-------
  1d		58s		14	{kubelet k8s-node2}			Warning		FailedSync	Error syncing pod, skipping: failed to "StartContainer" for "POD" with ErrImagePull: "image pull failed for registry.access.redhat.com/rhel7/pod-infrastructure:latest, this may be because there are no credentials on this request.  details: (open /etc/docker/certs.d/registry.access.redhat.com/redhat-ca.crt: no such file or directory)"

  1d	6s	118	{kubelet k8s-node2}		Warning	FailedSync	Error syncing pod, skipping: failed to "StartContainer" for "POD" with ImagePullBackOff: "Back-off pulling image \"registry.access.redhat.com/rhel7/pod-infrastructure:latest\""

[root@k8s-master ~]# kubectl get pod nginx -o wide		//显示调度节点
NAME      READY     STATUS              RESTARTS   AGE       IP        NODE
nginx     0/1       ContainerCreating   0          1d        <none>    k8s-node2

6)验证运行的pod

root@k8s-master ~]#  kubectl get pod nginx -o wide
NAME      READY     STATUS    RESTARTS   AGE       IP            NODE
nginx     1/1       Running   3          1d        172.16.56.2   k8s-node2
2、pod管理

1)删除pod

[root@k8s-master ~]# kubectl delete  pod nginx 
pod "nginx" deleted

2)查看删除pod无法找到

[root@k8s-master ~]#  kubectl get pod nginx -o wide
Error from server (NotFound): pods "nginx" not found

3)创建pod

[root@k8s-master ~]# kubectl create -f ./k8s/nginx.yaml 
pod "nginx" created

4)发现最先创建的pod运行在k8s-master节点上,下载镜像速度太慢没法运行

[root@k8s-master ~]#  kubectl get pod nginx -o wide
NAME      READY     STATUS              RESTARTS   AGE       IP        NODE
nginx     0/1       ContainerCreating   0          4m        <none>    k8s-master

5)访问pod节点中的服务

[root@k8s-master ~]# curl -I http://172.16.7.3
HTTP/1.1 200 OK
Server: nginx/1.13.12
Date: Mon, 03 Jan 2022 13:35:54 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Mon, 09 Apr 2018 16:01:09 GMT
Connection: keep-alive
ETag: "5acb8e45-264"
Accept-Ranges: bytes
3、pod操作

1)在一个pod中修改配置文件运行多个业务容器

[root@k8s-master ~]# vim ./k8s/nginx.yaml
apiVersion: v1
kind: Pod
metadata:
  name: test1
  labels:
    app: web
spec:
  containers:
    - name: nginx01
      image: nginx:1.13
      ports:
        - containerPort: 80
    - name: busybox
      image: docker.io/busybox:latest
      command: ["sleep","3600"]
      ports:
        - containerPort: 80

2)创建资源test2

[root@k8s-master ~]# kubectl create -f ./k8s/nginx.yaml 
pod "test1" created 

3)查看资源使用情况文章来源地址https://www.toymoban.com/news/detail-642175.html

[root@k8s-master ~]# kubectl get pod -o wide
NAME      READY     STATUS    RESTARTS   AGE       IP            NODE
nginx     1/1       Running   0          5d        172.16.7.3    k8s-master
test       1/1       Running   1          1h        172.16.96.2   k8s-node2
test1      2/2       Running   0          33s       172.16.12.2   k8s-node1

到了这里,关于yum部署kubernetes(k8s)集群、k8s常用资源管理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Kubernetes(k8s)集群部署----->超详细

    💖The Begin💖点点关注,收藏不迷路💖 Kubernetes(简称k8s)是一个开源的容器编排平台,可以帮助开发人员和运维团队更轻松地管理容器化应用程序。本文将详细介绍如何进行k8s集群的部署,以帮助读者快速搭建一个高可用、可伸缩的k8s集群。 1、操作系统:至少三台物理机或

    2024年02月05日
    浏览(62)
  • 基于Docker的K8s(Kubernetes)集群部署

    开始搭建k8s集群 三台服务器修改主机名称 关闭对话窗口,重新连接 三台主机名称呢就修改成功了。 接下来修改每台节点的 hosts 文件 所有节点关闭 setLinux 查看是否关闭成功 为每个节点添加 k8s 数据源 如果安装docker数据源找不到yum-config 所有节点安装kubelet kubelet安装中… k

    2024年02月08日
    浏览(97)
  • kubernetes/k8s配置资源管理

    配置资源管理 Secret Configmap*.1.2加入新特征 1.18 Secret:保存密码,token,敏感的k8s资源 这类数据可以存放在镜像当中,但是防止secret可以更方便的控制,减少暴漏风险。 保存加密的信息 Secret的类型: docker-registry:存储docker仓库认证信息,以及docker组件的认证信息(私有的) generic:是

    2024年01月17日
    浏览(50)
  • 【k8s】基于Prometheus监控Kubernetes集群安装部署

    目录 基于Prometheus监控Kubernetes集群安装部署 一、环境准备 二、部署kubernetes集群 三、部署Prometheus监控平台 四、部署Grafana服务 五、grafana  web操作 IP地址 主机名 组件 192.168.100.131 k8s-master kubeadm、kubelet、kubectl、docker-ce 192.168.100.132 k8s-node01 kubeadm、kubelet、kubectl、docker-ce 192.168

    2024年02月12日
    浏览(53)
  • kubernetes集群(k8s)之安装部署Calico 网络

    目录 安装部署Calico 网络 (一)环境准备 (二)部署docker环境 (三)部署kubernetes集群 (四)部署Calico网络插件 IP地址 主机名 组件 192.168.100.131 k8s-master kubeadm、kubelet、kubectl、docker-ce 192.168.100.132 k8s-node01 kubeadm、kubelet、kubectl、docker-ce 192.168.100.133 k8s-node02 kubeadm、kubelet、kube

    2024年02月12日
    浏览(48)
  • 云原生Kubernetes:K8S配置资源管理

    目录 一、理论 1.Secret 2.Secret创建 3.Secret使用 4.Configmap 5.Configmap创建 6.Configmap使用 二、实验 1.Secret创建 2.Secret使用 3.Configmap创建 4.Configmap使用 三、问题 1.变量引用生成资源报错 2.查看pod日志失败 3.创建configmap报错 4.YAML创建configmap报错 5. 生成资源报错 6.文件挂载pod报错Error 四

    2024年02月07日
    浏览(62)
  • 云原生|kubernetes|kubernetes集群部署神器kubekey安装部署高可用k8s集群(半离线形式)

    前面利用kubekey部署了一个简单的非高可用,etcd单实例的kubernetes集群,经过研究,发现部署过程可以简化,省去了一部分下载过程(主要是下载kubernetes组件的过程)只是kubernetes版本会固定在1.22.16版本,etcd集群可以部署成生产用的外部集群,并且apiserver等等组件也是高可用,

    2024年02月15日
    浏览(48)
  • Kubernetes技术--使用kubeadm快速部署一个K8s集群

    这里我们配置一个 单master集群 。( 一个Master节点,多个Node节点 ) 1.硬件环境准备 一台或多台机器,操作系统 CentOS7.x-86_x64 。这里我们使用安装了CentOS7的三台虚拟机 硬件配置 : 2GB或更多RAM , 2个CPU或更多CPU , 硬盘30GB或更多 2.主机名称和IP地址规划 3. 初始化准备工作 (1).关

    2024年02月10日
    浏览(51)
  • kubernetes(k8s)集群超级详细超全安装部署手册

    针对机器已安装过k8s的情况,如未安装过,请忽略。 k8s重置命令(如果初始化的过程出现了错误就使用重置命令): kubeadm reset 1.1 准备工作(所有的节点都执行) 编辑4台服务器的  /etc/hosts  文件 ,添加下面内容(每个节点都执行一遍): 设置hostname(以node1为例): 或者修

    2024年03月22日
    浏览(47)
  • [kubernetes]二进制部署k8s集群-基于containerd

    k8s从1.24版本开始不再直接支持docker,但可以自行调整相关配置,实现1.24版本后的k8s还能调用docker。其实docker自身也是调用containerd,与其k8s通过docker再调用containerd,不如k8s直接调用containerd,以减少性能损耗。 除了containerd,比较流行的容器运行时还有podman,但是podman官方安装

    2024年02月12日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包