安装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 服务并屏蔽用 ...
随机推荐
- 10分钟弄懂Raft算法
分布式系统在极大提高可用性.容错性的同时,带来了一致性问题(CAP理论).Raft算法能够解决分布式系统环境下的一致性问题. 我们熟悉的ETCD注册中心就采用了这个算法:你现在看的这篇微信公众号文章, ...
- (转)深入浅出Redis-redis哨兵集群
背景:对于后台开发,需要了解与集群相关的工作. 深入浅出Redis-redis哨兵集群 Sentinel(哨兵)是Redis 的高可用性解决方案:由一个或多个Sentinel 实例 组成的Sentin ...
- OpenStack-keystone命令行
Keystone简介 Keystone(OpenStack Identity Service)是OpenStack框架中,负责身份验证.服务规则和服务令牌的功能, 它实现了OpenStack的Iden ...
- Python界面常用GUI包
作为Pyhon开发者,你迟早都会碰到图形用户界面(GUI)应用开发任务,这时候我们就需要一些界面库来帮助我们快速搭建界面,python的界面库很多,我认识的并不多,这里只列出几种我认识的 1.tkin ...
- mac远程连接linux 服务器桌面by VNC
为了远程使用Linux服务器,折腾了一个下午.最终看来还是用vnc最简单了. 实验室有两台强劲的Linux服务器用来做研究.之前我一直都是用ssh登到服务器上去码代码,反应速度很快,感觉很不错.但是因 ...
- [转帖]FastDFS图片服务器单机安装步骤
FastDFS图片服务器单机安装步骤 https://www.cnblogs.com/yuesf/p/11847103.html 前面已经讲 一张图秒懂微服务的网络架构,通过此文章可以了解FastDF ...
- 《Mysql - 自增主键为何不是连续的?》
一:自增主键是连续的么? - 自增主键不能保证连续递增. 二:自增值保存在哪里? - 当使用 show create table `table_name`:时,会看到 自增值,也就是 AUTO_INC ...
- Servlet知识点小结
Servlet: server applet * 概念:运行在服务器端的小程序 * Servlet就是一个接口,定义了Java类被浏览器访问到(tomcat识别)的规则. * 将来我们自定义一个类,实 ...
- C++—多态与继承
一.基本概念 1.类的继承,是新的类从已有类那里得到已有的特性.或从已有类产生新类的过程就是类的派生.原有的类称为基类或父类,产生的新类称为派生类或子类. 2.派生类的声明: class 派生类名:继 ...
- MySQL数据库-表操作-SQL语句(一)
1. 数据库操作与存储引擎 1.1 数据库和数据库对象 数据库对象:存储,管理和使用数据的不同结构形式,如:表.视图.存储过程.函数.触发器.事件等. 数据库:存储数据库对象的容器. 数据库分两种 ...