安装k8s,使用root帐号的初始化脚本
现在稳定性差不多了。可以总结一下了。
真正使用时,有几个地方,还是确认一下,再正式运行吧。
#!/bin/bash
# Version V0. ---:
;fi
K8S_VERSION="1.14.1"
#定义执行kubeadm的普通用户
General_user="xxx"
K8S_VER=
#当前目录是在cmd下,所以要向上提一级cd..
dir_path=$(cd ``;cd ../;pwd)
cmd_path=$dir_path/cmd
cert_path=$dir_path/cert
rpm_path=$dir_path/rpm
RED_COLOR='\E[1;31m'
GREEN_COLOR='\E[1;32m'
YELOW_COLOR='\E[1;33m'
BLUE_COLOR='\E[1;34m'
PINK='\E[1;35m'
RES='\E[0m'
#如果存在已有文件,先删除,便于反复部署
function if_file_exist_del() {
]; then
fi
}
env_setting(){
echo -e "${PINK}***** $FUNCNAME *****${RES}"
#禁用相关服务
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce
sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/sysconfig/selinux
sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
sed -i "s/^SELINUX=permissive/SELINUX=disabled/g" /etc/sysconfig/selinux
sed -i "s/^SELINUX=permissive/SELINUX=disabled/g" /etc/selinux/config
swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab
#清空iptables
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P OUTPUT ACCEPT
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X
#修改内核参数
k8s_kernel_conf=/etc/sysctl.d/k8s.conf
if_file_exist_del $k8s_kernel_conf
cat<<EOF >$k8s_kernel_conf
net.ipv4.ip_forward =
net.bridge.bridge-nf-call-ip6tables =
net.bridge.bridge-nf-call-iptables =
fs.may_detach_mounts =
vm.overcommit_memory=
vm.panic_on_oom=
fs.inotify.max_user_watches=
fs.
fs.nr_open=
net.netfilter.nf_conntrack_max=
vm.swappiness=
EOF
sysctl -p
sysctl --system
# 安装必须系统软件包并加载模块
yum install bridge-utils ipset ipvsadm sysstat libseccomp conntrack conntrack-tools socat -y
modprobe br_netfilter
modprobe -- ip_vs
modprobe -- ipip
modprobe -- tun
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
modprobe -- nf_conntrack_ipv6
# 自动加载模块
ipvs_no=$(cat /etc/rc.local|grep ip_vs|wc -l)
]; then
echo "modprobe br_netfilter" >> /etc/rc.local
echo "modprobe -- ip_vs" >> /etc/rc.local
echo "modprobe -- ipip" >> /etc/rc.local
echo "modprobe -- tun" >> /etc/rc.local
echo "modprobe -- ip_vs_rr" >> /etc/rc.local
echo "modprobe -- ip_vs_wrr" >> /etc/rc.local
echo "modprobe -- ip_vs_sh" >> /etc/rc.local
echo "modprobe -- nf_conntrack_ipv4" >> /etc/rc.local
echo "modprobe -- nf_conntrack_ipv6" >> /etc/rc.local
fi
# sudo命令,这里不能写变量,所以最佳实现应该是写一个demo用户,接着替换成指定用户。灵活。
k8s_sudoers_conf=/etc/sudoers.d/k8s_sudoers
if_file_exist_del $k8s_sudoers_conf
cat<<EOF >$k8s_sudoers_conf
xxx ALL = (root) NOPASSWD:/bin/systemctl restart docker
xxx ALL = (root) NOPASSWD:/bin/systemctl reload docker
xxx ALL = (root) NOPASSWD:/bin/systemctl daemon-reload
xxx ALL = (root) NOPASSWD:/bin/systemctl start kubelet
xxx ALL = (root) NOPASSWD:/bin/systemctl stop docker
xxx ALL = (root) NOPASSWD:/bin/systemctl start docker
xxx ALL = (root) NOPASSWD:/bin/systemctl status docker
xxx ALL = (root) NOPASSWD:/bin/systemctl stop kubelet
xxx ALL = (root) NOPASSWD:/bin/systemctl restart kubelet
xxx ALL = (root) NOPASSWD:/bin/systemctl status kubelet
xxx ALL = (root) NOPASSWD:/usr/sbin/ipvsadm
xxx ALL = (root) NOPASSWD:/usr/bin/docker
xxx ALL = (root) NOPASSWD:/usr/local/bin/kubeadm
xxx ALL = (root) NOPASSWD:/usr/local/bin/kubectl
xxx ALL = (root) NOPASSWD:/usr/bin/chown -R docker /etc/kubernetes/
EOF
}
init_kube(){
echo -e "${PINK}***** $FUNCNAME *****${RES}"
# 先清空所有容器,并去除挂载点
systemctl stop kubelet.service
docker ps |grep -v "CONTAINER ID"|awk '{print $1}'|xargs -I {} docker stop {}
docker ps -a|grep -v "CONTAINER ID"|awk '{print $1}'|xargs -I {} docker rm {}
systemctl stop docker.service
for i in $(df|awk '$6 ~ /.*kubelet.*/{print $6}');do
umount $i
done
# 便于反复安装,先清除目录和应用
rm -rf /etc/cni/
rm -rf /opt/cni/bin/*
ifconfig docker0 down
ip link delete docker0
rm -f /usr/local/bin/kube*
rm -f /usr/bin/kube*
# 如果有calico网络,这样更顺利
calico_net_conf=/etc/NetworkManager/conf.d/calico.conf
if_file_exist_del $calico_net_conf
cat<<EOF >$calico_net_conf
[keyfile]
unmanaged-devices=interface-name:cali*;interface-name:tunl*
EOF
# 重新pki,方便证书管理
pki_dir=/etc/kubernetes
mkdir -p ${pki_dir}
rm -rf ${pki_dir}/*
chown -R ${General_user}.docker ${pki_dir}
chmod -R 755 ${pki_dir}
# 删除再重装rpm包
yum remove kubeadm -y
yum remove kubectl -y
yum remove kubelet -y
yum localinstall $rpm_path/*.rpm -y --skip-broken
chown -R $(id -u ${General_user}):$(id -g ${General_user}) /etc/systemd/system/kubelet*
# 不知为什么,读的是这个目录,要cp一下。
/bin/cp /usr/bin/kube* /usr/local/bin/
# 清除可能安装过的网络接口和路由表,干净
ifconfig -a|grep -vE '(^[[:space:]]|^$)'|grep -E '(veth|flannel|kube|cni|dummy)'|awk -F ":" '{print $1}'|awk '{for(i=1;i<=NF;i++){print "ip link set " $i " down";}}'|sh
ifconfig -a|grep -vE '(^[[:space:]]|^$)'|grep -E '(veth|flannel|kube|cni|dummy)'|awk -F ":" '{print $1}'|awk '{for(i=1;i<=NF;i++){print "ip link delete " $i;}}'|sh
ip route|grep 10.244|awk '{print $1}'|awk '{for(i=1;i<=NF;i++){print "ip route delete " $i;}}'|sh
modprobe -r ipip
modprobe -r ip_gre
modprobe ipip
# 自定义pauce,不然要去google下。
kubelet_sysconfig=/etc/sysconfig/kubelet
if_file_exist_del $kubelet_sysconfig
cat<<EOF >$kubelet_sysconfig
KUBELET_EXTRA_ARGS="--pod-infra-container-image=harbor.xxx.cn/3rd_part/k8s.gcr.io/pause:3.1"
EOF
# 重新加载,完成。
systemctl daemon-reload
systemctl start docker
systemctl enable kubelet && systemctl restart kubelet
echo -e "${GREEN_COLOR}***** k8s root init system success ******${RES}"
}
function main(){
env_setting
init_kube
kubeadm reset -f
ipvsadm -C
}
main
安装k8s,使用root帐号的初始化脚本的更多相关文章
- ubuntu初始化root帐号密码
Ubuntu Kylin 14.04的安装过程中并没有提供设置root密码的过程,取而代之的是自定义的帐号. 如果我们需要使用到root帐号或者root权限,则需要重新设置root帐号的密码. 设置方 ...
- ubuntu如何开启root,如何启用Ubuntu中root帐号
jingyan.baidu.com/article/495ba84116104238b20ede62.html ubuntu如何开启root,如何启用Ubuntu中root帐号 | 浏览:8344 | ...
- UBUNTU系统root帐号解锁
UBUNTU系统启动时默认以安装系统时输入的用户名进行登录.如:以非root帐号rusky登录系统,当我们做某些操作时系统提示需要输入root密码.但我们并没有设置过root密码.此时,可按如下操作为 ...
- GitHub学习心得之 安装配置与多帐号管理
作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 GitHub学习心得之 安装配置与多帐号管理 1.前言2.GitHub Linux安装(ub ...
- 在Ubuntu中用root帐号登录
一.其实我个人认为这没有多大必要,因为当你需要 root 的权限时,使用 sudo 便可以了.如果你实在需要在 Ubuntu 中启用 root 帐号的话,那么不妨执行下面的操作: 1.重新设置 roo ...
- 用root帐号切换其他帐号提示 su: warning: cannot change directory to /home/oracle: Permission denied
用root帐号切换其他帐号提示: 出错原因: 基本上是根目录或者是/home/oracle目录权限的问题 解决办法: 更改根目录权限为755,并保证对应用户主目录的所属用户和所属组一致和用户名一致. ...
- Ubuntu 中启用 root 帐号
参考:http://linuxtoy.org/archives/howto_enable_ubuntu_root_account.html 如果你实在需要在 Ubuntu 中启用 root 帐号的话, ...
- 容器计划任务大坑:在alpine容器里,想用非root帐号执行crontab任务
我只能说抱歉,我前前后后测试了七天, 将自己预想的配置错误,一个一个去验证. 非root帐号在alpine容器里执行crontab任务,还是失败, 输出依旧是一片空白~ stackoverflow里, ...
- 忘记 MySQL 的 root 帐号密码该怎么办
如果你忘了 MySQL 的 root 帐号密码,别担心,使用下面步骤就可以重设一个新密码: 首先停止 MySQL 服务 “/etc/init.d/mysql stop” 启动 MySQL 服务并屏蔽用 ...
随机推荐
- C# 注册DLL至GAC 并在添加引用中使用该DLL
本文链接:https://blog.csdn.net/World3000/article/details/819835901,创建一个强签名的类库 类库属性中新建秘钥文件 或者使用工具 使用命令sn ...
- Python:self理解
Python类 class Student: # 类变量,可以通过类.类变量(Student.classroom)或者实例.类变量(a.classroom)方式调用 classroom = '火箭班' ...
- C# 编译器 和 反编译器,你要哪个(歪头)? 我全都要(捏拳)!
前言 从 C# 6.0 开始,C# 编译器就从以前由 C++ 实现的 csc.exe 换成了用 C# 重新实现的开放式 API 式编译服务 Roslyn.这个编译器到现在已经替代了老式编译器,从前 W ...
- 二、Spring中的@ComponentScan自动扫描组件
在以往采用xml配置的方式中,我们通常需要配置<context:component-scan>标签 比如这样: <!-- 包扫描.只要标注了@Controller.@Service. ...
- [Python]MySQLdb for Python使用指南/Python的数据库操作
网站就是要和数据库进行交互,否则什么都不用做了...今天我们来看一个叫MySQLdb的库,这个用来和MySQL数据库进行交互.可以从这里获得这个库http://sourceforge.net/proj ...
- 学习数据结构Day4
链表 之前看过了动态数组,栈和队列,虽然我们把第一个叫做动态数组,但是,他们的底层实质上还是静态数组.靠 resize来实现动态数组.而链表是真正的数据结构 链表需要一个节点. 数据存储在链表中 相当 ...
- SpringBoot + Mybatis搭建完整的项目架构
准备工作: Java开发环境 已安装 springboot 插件(STS)的 Eclipse MySQL服务 一. 创建 springboot 项目 1. 打开Eclipse --> 左上角 ...
- Java开发笔记(一百零五)几种定时器线程池
前面介绍了普通线程池的用法,就大多数任务而言,它们对具体的执行时机并无特殊要求,最多是希望早点跑完早点出结果.不过对于需要定时执行的任务来说,它们要求在特定的时间点运行,并且往往不止运行一次,还要周期 ...
- DNS欺诈的三种简单方法总结
使用arpspoof.ettercap以及driftnet的简单组合. ①arpsppof+driftnet arpspoof -i eth0 -t 目标ip 目标网关 driftnet -i eth ...
- nginx配置比较杂乱的总结
常用变量 demo uri www.example.com/mock/interface?param1=203¶m2=test $args uri中的参数值 ?后面的部分 param1 ...