kubernetes最新版本1.15.1,shell脚本一键部署,刚刚完成测试,实用。(代码片段)

抛物线. 抛物线.     2022-11-29     758

关键词:

根据上一篇博客内容,《K8S最新版本集群部署超详细(k8s版本1.5.1)docker 版本19.03.1以及基本操作和服务介绍》

文章目录


由于自己一步一步安装,步骤有些不方便,今天趁着有时间,写了一个shell一键部署脚本,刚刚又测试了一遍,效果还不错,这里分享给大家。

这是我的GitHub地址,脚本放到上面了。
总共是3个脚本,一个变量脚本,一个Master节点脚本,一个Worker节点脚本。
过程截图如下:


首先贴出

1. k8s-openrc.sh脚本内容

#Author:weimengmeng
#Date:August 3, 2019
#Mail:1300042631@qq.com
#Version:v0.1
#K8s:V1.15.1
#Docker:V19.03.1
#This is Kubernetes Install One-Click Scripts
#--------------------system Config--------------------#
#Master Node Server Hostname. example:k8s-node1
#HOST_MASTER_NAME=
HOST_MASTER_NAME=k8s-node1

#WORKER1 Node Server Hostname. example:k8s-node2
#HOST_WORKER1_NAME=
HOST_WORKER1_NAME=k8s-node2

#WORKER2 Node Server Hostname. example:k8s-node3
#HOST_WORKER2_NAME=
HOST_WORKER2_NAME=k8s-node3

#Master Node Server IP. example:x.x.x.x
#HOST_MASTER_IP=
HOST_MASTER_IP=192.168.217.131

#Worker1 Node Server IP. example:x.x.x.x
#HOST_WORKER1_IP=
HOST_WORKER1_IP=192.168.217.132

#Worker2 Node Server IP. example:x.x.x.x
#HOST_WORKER2_IP=
HOST_WORKER2_IP=192.168.217.133

这是K8s的Openrc.sh的脚本地址My-GitHub-Addr-K8s-openrc.sh

2. K8S Master节点的脚本


[root@k8s-node1 opt]# cat  k8s-pre-master.sh   
#!/bin/bash

#Author:weimengmeng
#Date:August 3, 2019
#Mail:1300042631@qq.com
#Version:v0.1
#K8s:V1.15.1
#Docker:V18.09.1
#This is Kubernetes Install One-Click Scripts

source /opt/k8s-openrc.sh

printf "==========================================\\n"
printf "+                                        +\\n"
printf "+                                        +\\n"
echo -e "\\033[32m+    Hi.    Welcome To Kubernetes        +\\033[0m"
printf "+                                        +\\n"
printf "+                                        +\\n"
printf "==========================================\\n"

#-------------------Judge EveryOne Node Hostname------------------------------
if [[ `ip a |grep -w $HOST_MASTER_IP ` != '' ]];then
        hostnamectl set-hostname $HOST_MASTER_NAME
elif [[ `ip a |grep -w $HOST_WORKER1_IP ` != '' ]];then
        hostnamectl set-hostname $HOST_WORKER1_NAME
elif [[ `ip a |grep -w $HOST_WORKER2_IP ` != '' ]];then
        hostnamectl set-hostname $HOST_WORKER2_NAME
else
        hostnamectl set-hostname $HOST_MASTER_NAME
fi

#--------------------Hosts Map----------------------------
sed -i -e "/$HOST_MASTER_NAME/d" -e "/$HOST_WORKER1_NAME/d"  -e "/$HOST_WORKER2_NAME/d" /etc/hosts
echo "$HOST_MASTER_IP $HOST_MASTER_NAME" >> /etc/hosts
echo "$HOST_WORKER1_IP $HOST_WORKER1_NAME" >> /etc/hosts
echo "$HOST_WORKER2_IP $HOST_WORKER2_NAME" >> /etc/hosts

#------------------DNS Examine-------------------
sed -i -e 's/#UseDNS yes/UseDNS no/g' -e 's/GSSAPIAuthentication yes/GSSAPIAuthentication no/g' /etc/ssh/sshd_config

#----------------Judge  install software for  wget--------------------
TMP_WGET=`rpm -qa wget`
if [ $TMP_WGET==" " ];then
    echo -e "\\033[33m##-----------------------------Please wait a moment Checking install  wget------------------------##\\033[0m"
    yum install -y wget
else
    echo -e "\\033[31mThis wget aleary exist\\n\\033[0m"
fi
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum makecache


#-----------------Selinux config---------------------
sed -i 's/SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config
setenforce 0
getenforce 

#-----------------Firewalld config---------------
systemctl stop firewalld & systemctl disable firewalld

#-----------------Swap config--------------------
swapoff -a
sed -i '/ swap / s/^/#/' /etc/fstab

#-----------------Judge Install Need Software yum-utils.noarch---------------------
TMP_YUMUTILS=`rpm -qa yum-config-manager`
if [ $TMP_YUMUTILS==" " ];then
    echo -e "\\033[33m##----------------------------------------Please wait a moment installing yum-utils.noarch----------------------##\\n\\033[0m"
    yum install -y yum-utils.noarch
else
    echo -e "\\033[31mThe software for yum-utils.noarch aleary exist\\n\\033[0m"
fi

#------ailiyun.Registry----------------
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

#-----------------Install Docker-----------------
yum install docker-ce-18.09.8-3.el7 -y

printf "\\033[35m $(docker --version)\\n\\033[0m"

#-----------------Docker config------------------
systemctl start docker & systemctl enable docker

#-----------------Judge Docker run-----------
docker run hello-world > /opt/Hello_Docker.txt 
HELLO_DOCKER=`cat Hello_Docker.txt | grep -o Hello[[:space:]]from[[:space:]]Docker`
if [ ! "$HELLO_DOCKER" ];then
    printf "Docker Run is failed\\n"
    exit
else
    echo -e "\\033[32mDocker Run Successful!\\n\\033[0m"
fi

#=============k8s.yum.repo============
cat <<EOF > /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.gpg  http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

#=============k8s.install.kubelet、kubeadm、kubectl==============
yum install -y kubelet kubeadm kubectl
echo 'Environment="KUBELET_CGROUP_ARGS=--cgroup-driver=cgroupfs" '  >> /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf 
systemctl daemon-reload
systemctl enable kubelet && systemctl start kubelet


#=============Download.K8S===================
 echo -e "\\033[32mUp to date version\\n\\033[0m"
kubeadm config images list

#=============pull images====================
#kubeadm config images list |sed -e 's/^/docker pull /g' -e 's#k8s.gcr.io#pwxwmm#g' |sh -x
docker pull pwxwmm/kube-controller-manager:v1.15.1
docker pull pwxwmm/kube-apiserver:v1.15.1
docker pull pwxwmm/kube-scheduler:v1.15.1
docker pull pwxwmm/kube-proxy:v1.15.1
docker pull pwxwmm/pause:3.1
docker pull pwxwmm/etcd:3.3.10
docker pull pwxwmm/coredns:1.3.1

#=============Alter Tag=====================
docker images |grep pwxwmm |awk 'print "docker tag ",$1":"$2,$1":"$2' |sed -e 's#pwxwmm#k8s.gcr.io#2' |sh -x
#docker tag coredns/coredns:1.3.1  k8s.gcr.io/coredns:1.3.1
#docker tag  mirrorgooglecontainers/kube-apiserver-amd64:v1.15.1 k8s.gcr.io/kube-apiserver:v1.15.1
#docker tag  mirrorgooglecontainers/kube-scheduler-amd64:v1.15.1 k8s.gcr.io/kube-scheduler:v1.15.1
#docker tag  mirrorgooglecontainers/kube-controller-manager-amd64:v1.15.1 k8s.gcr.io/kube-controller-manager:v1.15.1
#docker tag  mirrorgooglecontainers/kube-proxy-amd64:v1.15.1  k8s.gcr.io/kube-proxy:v1.15.1
#docker tag  mirrorgooglecontainers/etcd:3.3.10 k8s.gcr.io/etcd:3.3.10
#docker tag  mirrorgooglecontainers/pause:3.1 k8s.gcr.io/pause:3.1

#=============Delete Repeat images===========
docker images | grep pwxwmm | awk 'print "docker rmi "  $1":"$2' | sh -x
#docker rmi coredns/coredns:1.3.1


#==============K8s.Init=================
echo "1" >/proc/sys/net/bridge/bridge-nf-call-iptables
kubeadm init --pod-network-cidr=192.168.0.0/16 --kubernetes-version=v1.15.1 --apiserver-advertise-address=$HOST_MASTER_IP  > /opt/k8s.init.txt

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

#==============Create Internet=============
kubectl apply -f https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/kubeadm/1.7/calico.yaml
kubectl get pods -n kube-system

#==============Schedule The Node For Pod  With Master =============
kubectl taint nodes --all node-role.kubernetes.io/master-


printf "==================================================================================================\\n"
printf "+                                                                                                +\\n"
printf "+ If you want See kubeadm join Token, Please Use cat Command See Master Node: /opt/k8s-init.txt  +\\n"
printf "+                                                                                                +\\n"
printf "+ If has place of the mistake, asks respectfully to point out mistakes.                          +\\n"
printf "+                                                                                                +\\n"
printf "+ You can contact me ,Mail:1300042631@qq.com                                                     +\\n"
printf "+                                                                                                +\\n"
printf "==================================================================================================\\n"


printf "==============================================\\n"
printf "+                                            +\\n"
printf "+                                            +\\n"
echo -e "\\033[32m+  Kubernetes Install Completed.   ByeBye    +\\033[0m"
printf "+                                            +\\n"
printf "+                                            +\\n"
printf "==============================================\\n"

这里是脚本地址My-GitHub-Addr-K8s-Master.sh

3. K8S Worker节点脚本

[root@k8s-node1 opt]# cat k8s-pre-worker.sh 
#!/bin/bash

#Author:weimengmeng
#Date:August 3, 2019
#Mail:1300042631@qq.com
#Version:v0.1
#K8s:V1.15.1
#Docker:V18.09.8-3.el7
#This is Kubernetes Install One-Click Scripts

source /opt/k8s-openrc.sh

printf "==========================================\\n"
printf "+                                        +\\n"
printf "+                                        +\\n"
echo -e "\\033[32m+    Hi.    Welcome To Kubernetes        +\\033[0m"
printf "+                                        +\\n"
printf "+                                        +\\n"
printf "==========================================\\n"

#-------------------Judge EveryOne Node Hostname------------------------------
if [[ `ip a |grep -w $HOST_MASTER_IP ` != '' ]];then
        hostnamectl set-hostname $HOST_MASTER_NAME
elif [[ `ip a |grep -w $HOST_WORKER1_IP ` != '' ]];then
        hostnamectl set-hostname $HOST_WORKER1_NAME
elif [[ `ip a |grep -w $HOST_WORKER2_IP ` != '' ]];then
        hostnamectl set-hostname $HOST_WORKER2_NAME
else
        hostnamectl set-hostname $HOST_MASTER_NAME
fi

#--------------------Hosts Map----------------------------
sed -i -e "/$HOST_MASTER_NAME/d" -e "/$HOST_WORKER1_NAME/d"  -e "/$HOST_WORKER2_NAME/d" /etc/hosts
echo "$HOST_MASTER_IP $HOST_MASTER_NAME" >> /etc/hosts
echo "$HOST_WORKER1_IP $HOST_WORKER1_NAME" >> /etc/hosts
echo "$HOST_WORKER2_IP $HOST_WORKER2_NAME" >> /etc/hosts

#------------------DNS Examine-------------------
sed -i -e 's/#UseDNS yes/UseDNS no/g' -e 's/GSSAPIAuthentication yes/GSSAPIAuthentication no/g' /etc/ssh/sshd_config
#----------------Judge  install software for  wget--------------------
TMP_WGET=`rpm -qa wget`
if [ $TMP_WGET==" " ];then
    echo -e "\\033[33m##-----------------------------Please wait a moment Checking install wget------------------------##\\033[0m"
    yum install -y wget
else
    echo -e "\\033[31mThis wget aleary exist\\n\\033[0m"
fi
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum makecache


#-----------------Selinux config---------------------
sed -i 's/SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config
setenforce 0
getenforce 

#-----------------Firewalld config---------------
systemctl stop firewalld & systemctl disable firewalld

#-----------------Swap config--------------------
swapoff -a
sed -i '/ swap / s/^/#/' /etc/fstab

#-----------------Judge Install Need Software yum-utils.noarch---------------------
TMP_YUMUTILS=`rpm -qa yum-config-manager`
if [ $TMP_YUMUTILS==" " ];then
    echo -e "\\033[33m##----------------------------------------Please wait a moment installing yum-utils.noarch----------------------##\\n\\033[0m"
    yum install -y yum-utils.noarch
else
    echo -e "\\033[31mThe software for yum-utils.noarch aleary exist\\n\\033[0m"
fi

#------ailiyun.Registry----------------
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

#-----------------Install Docker-----------------
yum install docker-ce-18.09.8-3.el7  -y

printf "\\033[35m $(docker --version)\\n\\033[0m"

#-----------------Docker config------------------
systemctl start docker & systemctl enable docker

#-----------------Judge Docker run-----------
docker run hello-world > /opt/Hello_Docker.txt 
HELLO_DOCKER=`cat Hello_Docker.txt | grep -o Hello[[:space:]]from[[:space:]]Docker`
if [ ! "$HELLO_DOCKER" ];then
    printf "Docker Run is failed\\n"
    exit
else
    echo -e "\\033[32mDocker Run Successful!\\n\\033[0m"
fi

#=============k8s.yum.repo============
cat <<EOF > /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.gpg  http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

#=============k8s.install.kubelet、kubeadm、kubectl==============
yum install -y kubelet kubeadm kubectl
echo 'Environment="KUBELET_CGROUP_ARGS=--cgroup-driver=cgroupfs" '  >> /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf 
systemctl daemon-reload
systemctl enable kubelet && systemctl start kubelet

#=============Download.K8S===================
echo -e "\\033[32mUp to date version\\n\\033[0m"
kubeadm config images list

#=============pull images====================
#kubeadm config images list |sed -e 's/^/docker pull /g' -e 's#k8s.gcr.io#pwxwmm#g' |sh -x
#docker pull coredns/coredns:1.3.1
docker pull pwxwmm/kube-controller-manager:v1.15.1
docker pull pwxwmm/kube-apiserver:v1.15.1
docker pull pwxwmm/kube-scheduler:v1.15.1
docker pull pwxwmm/kube-proxy:v1.15.1
docker pull pwxwmm/pause:3.1
docker pull pwxwmm/etcd:3.3.10
docker pull pwxwmm/coredns:1.3.1

#=============Alter Tag=====================
docker images |grep pwxwmm |awk 'print "docker tag ",$1":"$2,$1":"$2' |sed -e 's#pwxwmm#k8s.gcr.io#2' |sh -x
docker tag coredns/coredns:1.3.1  k8s.gcr.io/coredns:1.3.1


#=============Delete Repeat images===========
docker images | grep pwxwmm | awk 'print "docker rmi "  $1":"$2' | sh -x
#docker rmi coredns/coredns:1.3.1

docker images


printf "==================================================================================================\\n"
printf "+                                                                                                +\\n"
printf "+ If you want See kubeadm join Token, Please Use cat Command See Master Node: /opt/k8s-init.txt  +\\n"
printf "+                                                                                                +\\n"
printf "+ If has place of the mistake, asks respectfully to point out mistakes.                          +\\n"
printf "+                                                                                                +\\n"
printf "+ You can contact me ,Mail:1300042631@qq.com                                                     +\\n"
printf "+                                                                                                +\\n"
printf "==================================================================================================\\n"

printf "==============================================\\n"
printf "+                                            +\\n"
printf "+                                            +\\n"
echo -e "\\033[32m+  Kubernetes Install Completed.   ByeBye    +\\033[0m"
printf "+                                            +\\n"
printf "+                                            +\\n"
printf "==============================================\\n"

这是k8sMaster节点的脚本地址My-GitHub-Addr-K8s-Worker.sh

如有错误之处,敬请指正。

使用 Grafana 监控 Kubernetes:最新 Prometheus 版本丢失了大量数据

】使用Grafana监控Kubernetes:最新Prometheus版本丢失了大量数据【英文标题】:MonitoringKuberneteswithGrafana:lotsofmissingdatawithlatestPrometheusversion【发布时间】:2018-12-1304:53:03【问题描述】:我有一个正在运行的Kubernetes集群,我想使用Grafana... 查看详情

kubernetes运维之:版本升级

...9-05-021.11.102018-03-271.102019-02-131.10.132017-12-161.092018-10-021.9.11kubernetes没有LTS版本,每年4个小版本,社区同时支持最新的3个小版本。每个小版本生命周期约1年时间。不支持跨版本升级,比如不支持从1.16升级到1.18.稳妥中相对激进的... 查看详情

Kubernetes 部署模式和 REST API 版本

】Kubernetes部署模式和RESTAPI版本【英文标题】:Kubernetesdeploymentpatterns&RESTAPIversions【发布时间】:2020-01-1822:13:33【问题描述】:我有一个带有多个API版本的RESTAPI。每个API后端由多个微服务组成。可以公平地假设只有最新的RESTAP... 查看详情

k8s的1.15.1高可用版本(centos:7.9)(代码片段)

二进制部署k8s的1.15.1版本1.软件版本首先要把centos7系统的内核升级最好4.4以上(默认3.10的内核,运行大规模docker的时候会有bug)软件/系统版本备注Centos7.9最小安装版k8s1.15.1flannel0.11etcd3.3.102.角色分配k8s角色主机名节点IP备注master1+etcd... 查看详情

三台ecs使用kubeadm快速部署最新版本k8sv1.21.3

...版本K8sv1.21.3环境准备环境初始化开始安装安装docker添加kubernetes的yum软件源安装kubeadm,kubelet和kubectl部署KubernetesMaster安装网络插件节点加入集群查看结果测试Kubernetes集群在从节点上也可以使用kubectl阿里云三台ECS使用kubeadm快速部... 查看详情

关于kubernetes版本升级的一些笔记(代码片段)

...s.github.io]-[~]└─$yumlist--showduplicateskubeadm--disableexcludes=kubernetes#在列表中查找最新的1.22版本#它看起来应该是1.22.x-0,其中x是最新的补丁版本现有环境┌──[root@vms81.liruilongs.github.io]-[~/ansible]└─$kubectlgetnodesNAMESTATUSROLESA... 查看详情

三台ecs使用kubeadm快速部署最新版本k8sv1.21.3(代码片段)

...版本K8sv1.21.3环境准备环境初始化开始安装安装docker添加kubernetes的yum软件源安装kubeadm,kubelet和kubectl部署KubernetesMaster安装网络插件节点加入集群查看结果测试Kubernetes集群在从节点上也可以使用kubectl阿里云三台ECS使用kubeadm快速部... 查看详情

与kubernetes共存:集群升级的4种方式

如果你已经使用Kubernetes一段时间了,则可能需要考虑计划定期升级。从Kubernetes1.19开始,每个开源版本都提供一年的补丁。你需要升级到最新的可用次要版本或补丁版本才能获得安全性和错误修复。但是,如何在不停... 查看详情

kubernetes1.16.0重置升级到1.22.2(代码片段)

目录Kubernetes1.16.0手动升级到1.22.2前言Docker卸载升级最新版本Kubernetes还原Kubernetes升级1.22.2升级kubeadm、kubelet、kubectl(所有机器)升级k8smaster管理节点重新安装网络插件重新安装calico(master机器)升级k8snode工作节点... 查看详情

在 Kubernetes 中禁用 cronjob

】在Kubernetes中禁用cronjob【英文标题】:DisablingcronjobinKubernetes【发布时间】:2019-03-1712:25:27【问题描述】:我已安排一个应用程序在Kubernetes中作为Cronjob运行。当有代码更改时,我也在更改CronJob的图像。我正在寻找可以禁用当前... 查看详情

wwwhj6666comi8669i44445所有亮点都在这啦

新升级的Kubernetes所有亮点都在这啦!2018年9月27日,云原生计算基金会(CNCF)宣布,进一步提升了Kubernetes1.12版本的可用性。Kubernetes1.12最大的亮点是TLSBootstrapping的功能更加稳定。自2016年Kubernetes1.4版本发行以来,TLSBootstrapping开发... 查看详情

老司机教你使用shel脚本15分钟部署lnmp

...服务器架构。2、Linux是目前最流行的免费操作系统,代表版本有debian、centos、fedora、gento 查看详情

kubernetes各个版本下载

  kubernetes同步发行几个稳定的版本,生产上使用的版本可能不太统一,如何快速查看对应版本是否更新?https://github.com/kubernetes/kubernetes搜索特定版本 打开CHANGELOG 查看详情

kubernetes最新版集群搭建(代码片段)

角色IP系统k8s-master01、Keepalived(主)+Nginx172.16.3.225/21RockyLinuxrelease8.6(GreenObsidian)k8s-master02、Keepalived(从)+Nginx172.16.3.226/21RockyLinuxrelease8.6(GreenObsidian)k8s-master03、Keepalived(从)+Ngi 查看详情

Docker for Windows 中的 Minikube 与 Kubernetes

】DockerforWindows中的Minikube与Kubernetes【英文标题】:MinikubevsKubernetesinDockerforWindows【发布时间】:2018-12-1500:45:45【问题描述】:我见过的大多数使用Kubernetes在本地进行开发的教程都使用Minikube。在DockerforWindows的最新Edge版本中,您... 查看详情

minikube 安装的 Kubernetes 版本

】minikube安装的Kubernetes版本【英文标题】:Kubernetesversioninstalledbyminikube【发布时间】:2018-01-0215:54:00【问题描述】:如何知道minikube安装的kubernetes版本?我知道kubectl版本和minikube版本。【问题讨论】:应该是这样的minikubeconfiggetk... 查看详情

luatablepairs输出顺序问题(版本差异解决数字索引间断并兼容字符串索引)(代码片段)

问题标签:  LuaTable迭代器;LuaTable输出顺序;LuaTable顺序输出;LuaTable数字索引字符串索引;LuaTablepairs;问题背景:  使用pairs输出table时,其输出顺序与通常认知不相符.  例如使用pairs输出如下tableT=[1]="1",[2]="1",[3]="1",[4]="1",[5]="1",... 查看详情

k8s1.24.x二进制部署最新版本(代码片段)

标签(空格分隔):kubernetes系列一:系统环境初始化1.1系统环境系统:Rockylinux8.6x64cat/etc/hosts----172.16.10.21rockysrvs01172.16.10.22rockysrvs02172.16.10.23rockysrvs03172.16.10.24rockysrvs04172.16.10.25rockysrvs05172.16.10.26 查看详情