注意:这里安装测试的k8s版本比较低

k8s核心功能

自我修复
服务发现和负载均衡
自动部署和回滚
弹性伸缩


服务器环境准备

参考 k8s 安装部署 1 - 环境准备
准备3台服务器

192.168.56.101  k8s-node1
192.168.56.102  k8s-node2
192.168.56.103  k8s-node3
#其中k8s-node1作为master节点

Linux修改配置

# 将 SELinux 设置为 permissive 模式(相当于将其禁用)
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config#关闭交换分区 free -m 其中swap 要为0
swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab#允许 iptables 检查桥接流量
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOFcat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF#使以上配置生效
sudo sysctl --system

配置Docker安装源

sudo yum install -y yum-utils    #使用阿里云的库
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

配置kubernetes安装源

cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpghttp://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
exclude=kubelet kubeadm kubectl
EOF

安装etcd

在master节点安装配置etcd

yum install -y etcd #修改配置
vi /etc/etcd/etcd.conf
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.56.101:2379"systemctl start etcd
systemctl enable etcd

安装k8s master

在master节点安装

yum install -y kubernetes-master.x86_64#apiserver配置
vi /etc/kubernetes/apiserver
KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"
KUBE_API_PORT="--port=8080"KUBELTE_PORT="--kubelet-port=10250"
KUBE_ETCD_SERVERS="--etcd-servers=http://192.168.56.101:2379"#master节点端口
vi /etc/kubernetes/config
KUBE_MASTER="--master=http://192.168.56.101:8080"#启动服务
systemctl start kube-apiserver.service
systemctl start kube-controller-manager.service
systemctl start kube-scheduler.servicesystemctl enable kube-apiserver.service
systemctl enable kube-controller-manager.service
systemctl enable kube-scheduler.service
kubectl get componentstatus

安装node

在3台服务器上安装node

yum install -y kubernetes-node.x86_64#修改配置
vi /etc/kubernetes/config
KUBE_MASTER="--master=http://192.168.56.101:8080"#kubelet配置
vi /etc/kubernetes/kubelet
#配置当前主机IP,每台服务器的IP不一样
KUBELET_ADDRESS="--address=192.168.56.101"
KUBELET_PORT="--port=10250"
#配置当前主机名称
KUBELET_HOSTNAME="--hostname-override=k8s-node1"
KUBELET_API_SERVER="--api-servers=http://192.168.56.101:8080"systemctl start kubelet.service
#会同时启动docker
systemctl status dockersystemctl enable kubelet.servicesystemctl start kube-proxy.service
systemctl enable kube-proxy.servicekubectl version
kubectl get nodes

安装flannel网络插件

容器和容器之间需要通信,跨宿主机间容器通信

在所有节点上安装

yum install -y flannel#修改配置
vi /etc/sysconfig/flanneld
#配置ETCD
FLANNEL_ETCD_ENDPOINTS="http://192.168.56.101:2379"
#ETCD中配置项key值前缀
FLANNEL_ETCD_PREFIX="/atomic.io/network"
#如果是在Vagrant中启动的虚拟机,网卡eth0是预留给Vagrant ssh使用的,flannel需要配置使用eth1
FLANNEL_OPTIONS="--iface=eth1"

master节点中,在etcd中配置flannel的参数项,设置集群中容器ip地址范围

etcdctl set /atomic.io/network/config '{ "Network":"172.16.0.0/16" }'

启动flanneld

systemctl start flanneld.service
systemctl enable flanneld.service
systemctl restart flanneld.serviceifconfig
#flannel0 可以看到ip信息,docker的IP还没有变,需要重启dockersystemctl restart docker
ifconfig
#docker的IP也是172.16.x.x

测试跨宿主机容器之间的互通性

#在所有节点上执行
docker pull busybox
docker run -it busybox
ifconfig
#暂时无法ping通
ping 不同容器的ip#网络不通原因,docker版本问题
docker version#docker默认把iptables修改成DROP,需要修改成ACCEPT
iptables -L -n
Chain FORWARD (policy DROP)#修改后,在容器中互相可以ping通
iptables -P FORWARD ACCEPT#查找iptables路径
which iptables
/usr/sbin/iptables#iptables修改的命令,加入到docker的启动命令中
systemctl status docker
vi /usr/lib/systemd/system/docker.service
ExecStartPost=/usr/sbin/iptables -P FORWARD ACCEPT
ExecStart=/usr/bin/dockerd-current \systemctl daemon-reload

创建一个Pod

vi nginx_pod.yaml

apiVersion: v1
kind: Pod
metadata:name: nginxlabels:app: web
spec:containers:- name: nginximage: nginx:1.13ports:- containerPort: 80

执行

kubectl apply -f nginx_pod.yaml#遇到问题:
Error from server (ServerTimeout): error when creating "nginx_pod.yaml": No API token found for service account "default", retry after the token is automatically created and added to the service account
没有权限账号操作#修改apiserver配置
vi /etc/kubernetes/apiserver
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota"
#调整权限,修改为
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"systemctl restart kube-apiserver.service
kubectl apply -f nginx_pod.yaml
kubectl get pods -a
kubectl describe pod nginx#再次出现错误
failed to "StartContainer" for "POD" with ErrImagePull: "image pull failed for registry.access.redhat.com/rhel7/pod-infrastructure:latestdocker pull registry.access.redhat.com/rhel7/pod-infrastructure:latest
#文件是一个软链接,打不开 open /etc/docker/certs.d/registry.access.redhat.com/redhat-ca.crt: no such file or directory
ll /etc/docker/certs.d/registry.access.redhat.com/redhat-ca.crtcat /etc/kubernetes/kubelet
#指定的镜像下载不了,更换一下
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"docker search pod-infrastructure
vi /etc/kubernetes/kubelet
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=docker.io/tianyebj/pod-infrastructure:latest"systemctl restart kubelet.service

Docker设置阿里云镜像加速

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://registry.docker-cn.com", "https://82m9ar63.mirror.aliyuncs.com", "http://hub-mirror.c.163.com", "https://rn2snvg1.mirror.aliyuncs.com", "https://docker.mirrors.ustc.edu.cn"]
}
EOFsystemctl daemon-reload
systemctl restart docker

查看Pod

kubectl get pods -o wide
curl 172.16.86.2docker ps
#查看docker.io/tianyebj/pod-infrastructure:latest容器IP地址
docker inspect 363968f850d2 | grep -i ipaddress#而nginx容器没有IP地址
docker inspect 707344d5fcc2 | grep -i ipaddress#查看nginx网络模式:container类型,与pod-infrastructure容器共用IP地址
docker inspect 707344d5fcc2 | grep -i network#force强制删除,grace-period资源回收
kubectl delete pod test --force --grace-period=0

查看命令帮助文档

kubectl explain pod
kubectl explain pod.spec.containers

Relication Controller

滚动升级、升级回滚等

rc保证指定数量的pod始终存活,rc通过标签选择器来关联pod
删除多余pod资源时会删除存活时间最短的哪一个
rc在管理pod时通过selector中定义的标签来管理pod的数量,如果pod标签与rc标签一致,rc则认为这是自己开启的pod会对它进行管理,当少的时候增加,多的时候删除

创建一个rc文件 vim nginx-rc.yaml

apiVersion: v1
kind: ReplicationController
metadata:name: myweb
spec:replicas: 2selector:app: mywebtemplate:metadata:labels:app: mywebspec:containers:- name: mywebimage: nginx:1.13ports:- containerPort: 80

创建rc资源

kubectl create -f nginx-rc.yamlkubectl get rc
kubectl get pods
kubectl get rc -o wide#修改label
kubectl edit pod nginx#rc滚动升级,update-period指定升级间隔时间
kubectl rolling-update myweb -f nginx-rc2.yaml --update-period=30s#回滚
kubectl rolling-update myweb2 -f nginx-rc.yaml --update-period=1s#升级到一半,Ctrl + C中断
kubectl rolling-update myweb -f nginx-rc2.yaml --update-period=50s
#回滚到myweb,如果没有指定间隔时间,1分钟回滚1个pod
kubectl rolling-update myweb myweb2  --rollback

创建ervice

vim nginx-svc.yaml

apiVersion: v1
kind: Service
metadata:name: myweb
spec:type: NodePortports:- port: 80nodePort: 30000targetPort: 80selector:app: myweb

创建资源

kubectl apply -f nginx-svc.yamkubectl describe service myweb
kubectl get svc myweb
kubectl get pod -o wide
kubectl scale rc myweb --replicas=3
#复制文件到pod中
kubectl cp index.html myweb-xxx:/user/share/nginx/html/index.html#设置service外部端口范围
vi /etc/kubernetes/apiserver
KUBE_API_ARGS="--service-node-port-range=30000-50000"systemctl restart kube-apiserver.service

创建Deployment

#旧版本
apiVersion: extensions/v1beta1
#apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deployment
spec:replicas: 3template:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.13ports:- containerPort: 80

创建资源

kubectl apply -f nginx-deploy.yaml#创建Service,port指定访问Service的端口
kubectl expose deployment nginx-deployment --port=8000 --target-port=80 --type=NodePort#修改nginx版本
kubectl edit deployment nginx-deployment#回滚到上一个版本
kubectl rollout undo deployment nginx-deployment#查看历史版本(没有纪录改变信息)
kubectl rollout history deployment nginx-deploymentkubectl delete -f nginx-deploy.yaml
kubectl apply -f nginx-deploy.yaml#滚动更新,参数record纪录变更的原因
kubectl set image deployment/nginx-deployment nginx=nginx:1.16.1 --record
kubectl get pods -owide#查看正在滚动升级的状态
kubectl rollout status deployment/nginx-deployment#查看历史记录
kubectl rollout history deployment/nginx-deployment#查看某个历史详情
kubectl rollout history deployment/nginx-deployment --revision=2#回滚到上个版本
kubectl rollout undo deployment/nginx-deployment#回滚(回到指定版本)
kubectl rollout undo deployment/nginx-deployment --to-revision=2#查看使用的镜像版本
kubectl get deploy/nginx-deployment -oyaml|grep image

Pod的健康检查

livenessProbe:健康状态检查,周期性检查服务是否存活,检查结果失败,将重启容器
readinessProbe:可用性检查,周期性检查服务是否可用,不可用将从Service的Endpoints中移除

探针的检测方法:
exec:执行一段命令
httpGet:检测某个http请求的返回状态码
tcpSocket:测试某个端口是否能正常连接

liveness探针的exec使用 vi nginx_pod_exec.yaml

apiVersion: v1
kind: Pod
metadata:name: pod_exec
spec:containers:- name: nginximage: nginx:1.13ports:- containerPort: 80args:- /bin/sh- -c- touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600livenessProbe:exec:command:- cat- /tmp/healthy initialDelaySeconds: 5periodSeconds: 5

执行

kubectl apply -f nginx_pod_exec.yaml
kubectl describe pod pod_exec

liveness探针的httpGet使用 vi nginx_pod_httpGet.yaml

apiVersion: v1
kind: Pod
metadata:name: pod_httpget
spec:containers:- name: nginximage: nginx:1.13ports:- containerPort: 80livenessProbe:httpGet:path: /index.htmlport: 80initialDelaySeconds: 3periodSeconds: 3

执行

kubectl apply -f nginx_pod_httpGet.yaml
kubectl describe pod pod_httpget#测试移动文件index.html
kubectl exec -it pod_httpget /bin/bash
cd /usr/share/nginx/html
mv index.html /tmp/
kubectl describe pod pod_httpget

readiness探针的httpGet使用 vi nginx-rc-httpGet.yaml

apiVersion: v1
kind: ReplicationController
metadata:name: readiness_test
spec:replicas: 2selector:app: readinesstemplate:metadata: labels:app: readinessspec:containers:- name: readinessimage: nginx:1.13ports:- containerPort: 80readinessProbe:httpGet:path: /intmall.htmlport: 80initialDelaySeconds: 3perodSeconds: 3

执行

kubectl apply -f nginx-rc-httpGet.yaml #如果intmall.html文件不存在,pod不会加入到svc中
kubectl expose rc readiness_svc --port=80
kubectl describe svc readiness_svckubectl exec -it readiness_test-xxx /bin/bash
cd /usr/share/nginx/html
echo 'hello' > intmall.html
exit
kubectl describe svc readiness_svc

http压力测试工具ab

yum install -y httpd-toolsab -n 500000 -c 10 http://127.0.0.1/index.html

分布式文件系统GlusterFS

在3台服务器中安装

yum install -y centos-release-gluster
yum install -y glusterfs-server
systemctl start glusterd.service
systemctl enable glusterd.service
mkdir -p /gfs/test1
mkdir -p /gfs/test2

添加存储资源池

#master节点
gluster pool list
gluster peer probe k8s-node2
gluster peer probe k8s-node3
gluster pool list
GlusterFS卷管理
创建分布式复制卷
gluster volume create intmall replica 2 k8s-node1:/gfs/test1 k8s-node1:/gfs/test2 k8s-node2:/gfs/test1 k8s-node2:/gfs/test2 force启动卷
gluster volume start intmall查看卷
gluster volume info intmall挂载卷
mount -t glusterfs 192.168.56.101:/intmall /mnt
df -h 扩容命令
gluster volume add-brick intmall replica 2 k8s-node3:/gfs/test1 k8s-node3:/gfs/test2 force
df -hcd /mnt
rz  #上传一个压缩文件后解压
#在3台节点上查看文件,均匀分布存储2份
tree /gfs

k8s使用GlusterFS后端存储

查看帮助文档

kubectl explain pv.spec
#endpoints指向Service中的Endpoints
kubectl explain pv.spec.glusterfs

创建Endpoint vi glusterfs-ep.yaml

apiVersion: v1
kind: Endpoints
metadata:name: glusterfs
subsets:
- addresses: - ip: 192.168.56.101- ip: 192.168.56.102- ip: 192.168.56.103ports: - port: 49152protocol: TCP

执行

#glusterfs默认端口49152
netstat -lntup    kubectl apply -f glusterfs-ep.yaml
kubectl get ep

创建Service vi glusterfs-svc.yaml

#name需要与Endpoints相同
apiVersion: v1
kind: Service
metadata:name: glusterfs
spec:ports:- port: 49152protocol: TCPtargetPort: 49152sessionAffinity: Nonetype: ClusterIP

执行

kubectl apply -f glusterfs-svc.yaml
kubectl get svc
kubectl describe svc glusterfs

创建pv vi glusterfs-pv.yaml

apiVersion: v1
kind: PersistentVolume
metadata:name: glusterfslabels: type: glusterfs
spec:capacity:storage: 100MaccessModes:- ReadWriteManyglusterfs:endpoints: "glusterfs"path: "intmall"readOnly: false

执行

kubectl apply -f glusterfs-pv.yaml
kubectl get pv

创建pvc vi glusterfs-pvc.yaml

vi glusterfs-pvc.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:name: gluster
spec:accessModes:- ReadWriteManyresources:requests:storage: 90Mi

执行

kubectl apply -f glusterfs-pvc.yaml
kubectl get pvc
kubectl get pv

创建Pod,使用pvc vi glusterfs-pod.yaml

vi glusterfs-pod.yaml
apiVersion: v1
kind: Pod
metadata:name: nginx-pvc
spec:containers:- name: nginximage: nginx:1.13ports:- containerPort: 80volumeMounts:- name: htmlmountPath: /usr/share/nginx/htmlvolumes:- name: htmlpersistentVolumeClaim:claimName: gluster

执行

kubectl apply -f glusterfs-pod.yaml
kubectl get pod

使用Jenkins部署服务

参考:
http://events.jianshu.io/p/d28bd468d76d
Jenkins-推送镜像到阿里云仓库

https://blog.csdn.net/ichen820/article/details/103461148
CentOS7安装Jenkins教程

https://blog.csdn.net/weixin_44896406/article/details/127032933
jenkins在linux下安装(rpm包)

https://blog.csdn.net/C343500263/article/details/123400385
jenkins配置文件不生效等踩坑日志

https://www.cnblogs.com/creamk87/p/14504323.html
Centos7部署Jenkins,配置自动拉取gitlab上自动化测试代码并构件执行

Jenkins安装

在 https://mirrors.tuna.tsinghua.edu.cn/ 中搜索jenkins,下载 jenkins-2.346.3-1.1.noarch.rpm
安装

yum -y install jenkins-2.346.3-1.1.noarch.rpm

修改配置文件 vim /etc/sysconfig/jenkins

JENKINS_PORT="8084"
JENKINS_USER="root"
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Dorg.apache.commons.jelly.tags.fmt.timeZone=Asia/Shanghai"

启动Jenkins

systemctl enable --now jenkins

如果遇到错误:

systemctl status jenkins.service
● jenkins.service - Jenkins Continuous Integration ServerLoaded: loaded (/usr/lib/systemd/system/jenkins.service; enabled; vendor preset: disabled)Active: failed (Result: start-limit) since Thu 2022-11-17 14:08:38 UTC; 8s agoProcess: 24235 ExecStart=/usr/bin/jenkins (code=exited, status=1/FAILURE)Main PID: 24235 (code=exited, status=1/FAILURE)#给jdk创建软链接ln -s /usr/local/jdk1.8.0_202/bin/java /usr/bin/javasystemctl daemon-reload
systemctl enable --now jenkins

如果还遇到端口占用问题,是Jenkins运行使用了不同的配置文件

#查看使用的配置文件
systemctl status jenkins
vi /usr/lib/systemd/system/jenkins.service
JENKINS_PORT="8084"
JENKINS_USER="root"
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Dorg.apache.commons.jelly.tags.fmt.timeZone=Asia/Shanghai"systemctl enable --now jenkins

配置Jenkins
http://192.168.56.101:8084

修改插件更新源为国内源地址

cd /var/lib/jenkins/updates
cp default.json default.json.bakup
sed -i 's#updates.jenkins.io/download/plugins#mirrors.tuna.tsinghua.edu.cn/jenkins/plugins#g' default.json
sed -i 's#www.google.com#www.baidu.com#g' default.json
systemctl restart jenkins

安装gitee插件

配置gitee交互凭证
Manage Credentials -》全局,添加Gitee API令牌
在 https://gitee.com/profile/personal_access_tokens 生成私人令牌

添加 Gitee 链接配置
Jenkins -> Manage Jenkins -> Configure System -> Gitee 配置 -> Gitee 链接
https://gitee.com

git仓库的credentials 只能选择ssh key 或者用户名密码的凭据,gitee api token的凭据只是给触发器插件用的,目前这是两套凭据。
所以需要单独为git源码管理插件配置ssh key 或者用户名密码凭据哦

添加阿里云镜像仓库用户名凭证,ID可以命名:ALIYUN_ACCOUNT

准备一个gitee测试项目修改配置文件

在gitee中搜索h5_demo,fork到自己账号中

在h5_demo根目录创建文件 Dockerfile

FROM nginx:1.21.6
ADD . /usr/share/nginx/html/

打包镜像在拷贝文件时,排除Dockerfile文件本身

vi .dockerignore
Dockerfile

Windows可以在cmd中输入
echo Dockerfile > .dockerignore

代码提交上传到gitee中

测试镜像
#注意:这里是私有项目
git clone https://gitee.com/galen.zhang/h5_demo
cd h5_demo
docker build -t h5_demo:v1 .
docker run -d -p 88:80 h5_demo:v1
curl http:127.0.0.1:88

Jenkins创建项目

Jenkins创建一个项目,git代码 https://gitee.com/galen.zhang/h5_demo
选择全局凭证
先构建一次测试是否能正常拉取项目代码

在shell中打包镜像并推送到阿里云镜像仓库

#ALIYUN_REGISTRY = credentials('ALIYUN_ACCOUNT')
#docker login --username=${ALIYUN_REGISTRY_USR} --password=${ALIYUN_REGISTRY_PSW} registry.cn-hangzhou.aliyuncs.com
#docker build -t registry.cn-hangzhou.aliyuncs.com/intmall/h5_demo:v1 .
#docker push registry.cn-hangzhou.aliyuncs.com/intmall/h5_demo:v1#遇到错误,暂时无法解决
#syntax error near unexpected token `('#暂时直接配置用户名、密码
docker login --username=xxxx --password=xxxx registry.cn-hangzhou.aliyuncs.com
docker build -t registry.cn-hangzhou.aliyuncs.com/intmall/h5_demo:v1 .
docker push registry.cn-hangzhou.aliyuncs.com/intmall/h5_demo:v1

构建项目,在阿里云镜像仓库查看镜像是否推送成功

使用变量,每次构建镜像时使用不能版本号

docker build -t registry.cn-hangzhou.aliyuncs.com/intmall/h5_demo:v$BUILD_ID .
docker push registry.cn-hangzhou.aliyuncs.com/intmall/h5_demo:v$BUILD_ID

如果代码没有改变,不重新构建

#!/bin/bash
if [ $GIT_PREVIOUS_SUCCESSFUL_COMMIT == $GIT_COMMIT ];thenecho "no change, skip build"exit 0
else echo "git pull"
fi

在k8s中部署项目

kubectl run h5-demo --image=registry.cn-hangzhou.aliyuncs.com/intmall/h5_demo:v1 --replicas=2 --record
kubectl rollout history deployment h5-demo
kubectl get all
kubectl expose deployment h5-demo --port=80 --type=NodePort升级回滚
kubectl set image deploy h5-demo h5-demo=registry.cn-hangzhou.aliyuncs.com/intmall/h5_demo:v12
kubectl rollout history deployment h5-demo
kubectl rollout undo deployment h5-demo --to-revision=1#-s指定k8s的apiserver地址
kubectl -s 192.168.56.101:8080 get nodes

使用Jenkins构建部署到k8s中,在shell中增加

kubectl -s 192.168.56.101:8080 set image deploy h5-demo h5-demo=registry.cn-hangzhou.aliyuncs.com/intmall/h5_demo:v$BUILD_ID

h5_demo修改代码上传,重新构建Jenkins

CentOS7使用Yum安装k8s相关推荐

  1. ARM架构服务器centos7.4上yum安装k8s教程

    1.环境说明 [root@k8s-master ~]# uname -a Linux slave1 4.11.0-22.el7a.aarch64 #1 SMP Sun Sep 3 13:39:10 C ...

  2. yum安装k8s集群(单master两个node、阿里云镜像源)

    yum安装k8s集群(单master节点方式) 一.环境准备 1.系统要求 按量付费阿里云主机三台 要求:centos7.6~7.8:以下为 https://kuboard.cn/install/in ...

  3. CentOS7用yum安装软件报:Cannot find a valid baseurl for repo: base/7/x86_64

    CentOS7用yum安装软件报:Cannot find a valid baseurl for repo: base/7/x86_64 问题:Cannot find a valid baseurl ...

  4. CentOS7使用yum安装Nginx

    CentOS7使用yum安装Nginx 文章目录 CentOS7使用yum安装Nginx 安装说明 安装gcc 安装pcre库 安装zlib库 安装OpenSSL库 安装Nginx库 启动nginx ...

  5. centos7 go yum 安装_超详细的centos7下载安装Postgresql11(yum安装)教程

    概述 新项目准备用PG数据库,实际上也是练手用的,后面用好了再做mysql到PG的迁移,今天主要记录一下centos7用yum安装Postgresql11的过程. 1.到官网查看yum支持到哪个版本的 ...

  6. linux下yum安装pgsql,CentOS7使用yum安装PostgreSQL和PostGIS的方法

    1.更新yum源 CentOS7默认yum源的PostgreSQL版本过低,不适合在本版本上使用.在https://yum.postgresql.org/repopackages.php上找到适合Ce ...

  7. Centos7通过yum安装jdk8

    1.Centos7通过yum安装jdk8 2.Centos7通过yum安装jdk8 转载于:https://www.cnblogs.com/linjiqin/p/11459529.html

  8. Centos7.4 yum 安装MariaDB

    Centos7.4 yum 安装MariaDB #系统及版本选择:https://downloads.mariadb.org/mariadb/repositories/#mirror=tuna vim ...

  9. centos7在线yum安装mysql时官方镜像下载过慢的解决方案

    centos7在线yum安装mysql时官方镜像下载过慢的解决方案 参考文章: (1)centos7在线yum安装mysql时官方镜像下载过慢的解决方案 (2)https://www.cnblogs. ...

  10. CentOS7用yum安装MySQL8.0 2209170054

    CentOS7用yum安装MySQL8.0 2209170054 Ubuntu20.04安装MySQL很轻松, apt install mysql-server就搞定了 CentOS7安装MySQL很 ...

最新文章

  1. Win7 命令行下C语言学习环境搭建(三)
  2. NGTabBarController
  3. h3c服务器安装linux,H3C服务器安装Ubuntu操作系统
  4. pycharm中from xx import xx报错:Unresolved reference
  5. java 菜单 分隔符_在Java中使用分隔符连接值列表最优雅的方法是什么?
  6. Intel® Nehalem/Westmere架构/微架构/流水线 (5) - 高速缓存 存储器子系统
  7. ThinkPHP连接sqlserver,错误11001
  8. vsto excel决跨表引用值不能更新的问题
  9. 操作简单、功能务实——四维星软件
  10. A6 词根:-vict- = -vinc-;单词:evince、vincible
  11. linux分配oracle内存,【学习笔记】Linux系统 ORACLE用户进程占用私有内存分析
  12. ffmpeg过滤器系列:序章,什么是ffmpeg过滤器?ffmpeg过滤器可以用来做什么
  13. python 协程是啥_什么是Python中的协程
  14. 鸿蒙os5月后还能申请吗,鸿蒙12月申请过现在还能申请吗?
  15. snmp+mrtg实现对局域网内的linuxServer的监控(转)
  16. 达人评测 惠普星15和惠普战66选哪个好
  17. 电脑速度慢的原因及解决方法
  18. 刘强东:B2C电商的本质
  19. Java密码连接redis
  20. 一个被放大43亿倍的DDoS数据包会产生怎样的结果?

热门文章

  1. IDEA背景色和背景图片的设置
  2. mysql查询排名名次
  3. 计算机怎么通电启动,电脑通电自动开机怎么设置
  4. 2020/03/11美版iPhone卡贴ICCID完美激活!
  5. java 动态修改配置文件_Java 项目中一种简单的动态修改配置即时生效的方式 WatchService...
  6. Power BI----到底什么是度量值?
  7. 最大熵阈值python_使用python进行普适计算
  8. html5 今日头条视频播放,今日头条app设置自动播放视频的方法
  9. MSP430番外——BSL介绍
  10. 知识普及 上海宝付带你揭穿金融诈骗“小把戏”