配置K8s

  1. #####################################################################################
  2. # 配置 ----------------------------------------------------------START
  3. # 主节点
  4. HOST="192.168.2.151"
  5. HOST_NAME="master"
  6. # 从节点
  7. declare -A SLAVES
  8. SLAVES=(
  9. [slave1]="192.168.2.152"
  10. [slave2]="192.168.2.153"
  11. )
  12. # 如果是Harbor,则是配置的Host
  13. DOCKERREPOHOST="wosperry.com.cn:8704" #必须先 docker login 192.168.124.5 登录自己仓库#
  14. DOCKERREPONAME="google_containers"
  15. # 配置 -----------------------------------------------------------END
  16. #####################################################################################
  17. # 随便新建一个文件夹 -----------------------------------------------START
  18. mkdir /k8s
  19. cd /k8s
  20. # 随便新建一个文件夹 -----------------------------------------------END
  21. # 同步时间 -------------------------------------------------------START
  22. yum -y install chrony
  23. systemctl start chronyd && systemctl enable chronyd
  24. chronyc sources
  25. # 同步时间 -------------------------------------------------------END
  26. # 设置 Host Name ------------------------------------------------START
  27. hostnamectl set-hostname $HOST_NAME
  28. # 设置 Host Name ------------------------------------------------END
  29. # 调整 hosts ----------------------------------------------------START
  30. TMP=""
  31. TMP=`echo -e "${TMP}\n${HOST} ${HOST_NAME}"`
  32. for key in $(echo ${!SLAVES[*]})
  33. do
  34. TMP=`echo -e "${TMP}\n${SLAVES[$key]} ${key}"`
  35. done
  36. cat << EOF >> /etc/hosts
  37. ${TMP}
  38. EOF
  39. # 查看HOST
  40. cat /etc/hosts
  41. # 调整 hosts ----------------------------------------------------END
  42. # 禁用SELinux和Swap ---------------------------------------------START
  43. # 关闭swap分区【虚拟内存】并且永久关闭虚拟内存
  44. swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
  45. # 关闭selinux
  46. setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
  47. # 禁用SELinux和Swap ----------------------------------------------END
  48. # 安装依赖软件 ---------------------------------------------------START
  49. yum install -y conntrack ipvsadm ipset jq iptables curl sysstat libseccomp wget vim net-tools git iproute lrzsz bash-completion tree nfs-utils unzip bind-utils gcc
  50. # 安装依赖软件 ---------------------------------------------------END
  51. # 放行端口 ------------------------------------------------------START
  52. firewall-cmd --zone=public --add-port=6443/tcp --permanent
  53. firewall-cmd --zone=public --add-port=2379-2380/tcp --permanent
  54. firewall-cmd --zone=public --add-port=10250-10252/tcp --permanent
  55. firewall-cmd --zone=public --add-port=30000-32767/tcp --permanent
  56. # 重启
  57. firewall-cmd --reload
  58. # 放行端口 ------------------------------------------------------END
  59. # 置空iptables --------------------------------------------------START
  60. yum -y install iptables-services && systemctl start iptables && systemctl enable iptables && iptables -F && service iptables save
  61. # 置空iptables --------------------------------------------------END
  62. # 安装 docker-ce ------------------------------------------------START
  63. wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
  64. yum -y install docker-ce && systemctl enable docker && systemctl start docker
  65. docker --version
  66. # 安装 docker-ce ------------------------------------------------END
  67. # 配置 /etc/docker/daemon.json ----------------------------------START
  68. mkdir -p /etc/docker
  69. cat > /etc/docker/daemon.json <<EOF
  70. {
  71. "registry-mirrors": [
  72. "https://4534gx72.mirror.aliyuncs.com",
  73. "https://1nj0zren.mirror.aliyuncs.com",
  74. "https://docker.mirrors.ustc.edu.cn",
  75. "http://f1361db2.m.daocloud.io",
  76. "https://registry.docker-cn.com"
  77. ],
  78. "insecure-registries": [
  79. "$DOCKERREPOHOST"
  80. ]
  81. }
  82. EOF
  83. systemctl daemon-reload && systemctl restart docker
  84. # 配置 /etc/docker/daemon.json ----------------------------------END
  85. # 调整内核参数 ---------------------------------------------------START
  86. cat > kubernetes.conf <<EOF
  87. net.bridge.bridge-nf-call-iptables=1
  88. net.bridge.bridge-nf-call-ip6tables=1
  89. net.ipv4.ip_forward=1
  90. net.ipv4.tcp_tw_recycle=0
  91. vm.swappiness=0
  92. vm.overcommit_memory=1
  93. vm.panic_on_oom=0
  94. fs.inotify.max_user_instances=8192
  95. fs.inotify.max_user_watches=1048576
  96. fs.file-max=52706963
  97. fs.nr_open=52706963
  98. net.ipv6.conf.all.disable_ipv6=1
  99. net.netfilter.nf_conntrack_max=2310720
  100. EOF
  101. # 将优化内核文件拷贝到/etc/sysctl.d/文件夹下,这样优化文件开机的时候能够被调用
  102. cp kubernetes.conf /etc/sysctl.d/kubernetes.conf
  103. # 手动刷新,让优化文件立即生效
  104. sysctl -p /etc/sysctl.d/kubernetes.conf
  105. # 调整内核参数 ---------------------------------------------------END
  106. # 创建路径 ------------------------------------------------------START
  107. # 创建保存日志的目录
  108. mkdir /var/log/journal
  109. # 创建配置文件存放目录
  110. mkdir /etc/systemd/journald.conf.d
  111. # 创建路径 ------------------------------------------------------END
  112. # 创建配置文件 ---------------------------------------------------START
  113. cat > /etc/systemd/journald.conf.d/99-prophet.conf <<EOF
  114. [Journal]
  115. Storage=persistent
  116. Compress=yes
  117. SyncIntervalSec=5m
  118. RateLimitInterval=30s
  119. RateLimitBurst=1000
  120. SystemMaxUse=10G
  121. SystemMaxFileSize=200M
  122. MaxRetentionSec=2week
  123. ForwardToSyslog=no
  124. EOF
  125. # 创建配置文件 ---------------------------------------------------END
  126. # 重启systemd journald 的配置 ------------------------------------START
  127. systemctl restart systemd-journald
  128. # 重启systemd journald 的配置 ------------------------------------END
  129. # 打开文件数调整 --------------------------------------------------START
  130. echo "* soft nofile 65536" >> /etc/security/limits.conf
  131. echo "* hard nofile 65536" >> /etc/security/limits.conf
  132. # 打开文件数调整 --------------------------------------------------END
  133. # kube-proxy 开启 ipvs 前置条件 -----------------------------------START
  134. modprobe br_netfilter
  135. cat > /etc/sysconfig/modules/ipvs.modules <<EOF
  136. modprobe -- ip_vs
  137. modprobe -- ip_vs_rr
  138. modprobe -- ip_vs_wrr
  139. modprobe -- ip_vs_sh
  140. modprobe -- nf_conntrack_ipv4
  141. EOF
  142. # 使用lsmod命令查看这些文件是否被引导
  143. chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
  144. # kube-proxy 开启 ipvs 前置条件 -----------------------------------END
  145. # 国内镜像配置(国内建议配置) ----------------------------------------START
  146. cat > /etc/yum.repos.d/kubernetes.repo << EOF
  147. [kubernetes]
  148. name=Kubernetes
  149. baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
  150. enabled=1
  151. gpgcheck=1
  152. repo_gpgcheck=1
  153. gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
  154. EOF
  155. # 国内镜像配置(国内建议配置) ----------------------------------------END
  156. # 安装Kubelet ----------------------------------------------------START
  157. yum -y install kubelet kubectl kubeadm
  158. systemctl enable kubelet && systemctl start kubelet
  159. # 安装Kubelet ----------------------------------------------------END
  160. # 以下私服拉取镜像,不一定要这样执行,可以尝试
  161. # kubeadm config print init-defaults > kubeadm-init.yaml
  162. # 生成的文件
  163. # 先尝试 kubeadm config images pull --config kubeadm-init.yaml
  164. # 直接拉取镜像试试,如果不行再走私服
  165. # 我遇到装不了的情况,仓库的coredns的tag不带v,而使用的带v
  166. # 不使用生成的文件
  167. # kubeadm config print init-defaults > kubeadm-init.yaml
  168. # 创建 kubeadm-init.yaml------------------------------------------START
  169. ####################################################################################################
  170. # 私服开始
  171. ####################################################################################################
  172. cat << EOF > kubeadm-init.yaml
  173. apiVersion: kubeadm.k8s.io/v1beta2
  174. bootstrapTokens:
  175. - groups:
  176. - system:bootstrappers:kubeadm:default-node-token
  177. token: abcdef.0123456789abcdef
  178. ttl: 24h0m0s
  179. usages:
  180. - signing
  181. - authentication
  182. kind: InitConfiguration
  183. localAPIEndpoint:
  184. advertiseAddress: ${HOST}
  185. bindPort: 6443
  186. nodeRegistration:
  187. criSocket: /var/run/dockershim.sock
  188. name: master
  189. taints:
  190. - effect: NoSchedule
  191. key: node-role.kubernetes.io/master
  192. ---
  193. apiServer:
  194. timeoutForControlPlane: 4m0s
  195. apiVersion: kubeadm.k8s.io/v1beta2
  196. certificatesDir: /etc/kubernetes/pki
  197. clusterName: kubernetes
  198. controllerManager: {}
  199. dns:
  200. type: CoreDNS
  201. etcd:
  202. local:
  203. dataDir: /var/lib/etcd
  204. imageRepository: ${DOCKERREPOHOST}/${DOCKERREPONAME}
  205. kind: ClusterConfiguration
  206. kubernetesVersion: v1.21.0
  207. networking:
  208. dnsDomain: cluster.local
  209. serviceSubnet: 10.96.0.0/12
  210. scheduler: {}
  211. EOF
  212. # 创建 kubeadm-init.yaml------------------------------------------END
  213. docker login $DOCKERREPOHOST
  214. # 拉取镜像并推送到自己仓库 -------------------------------------------START
  215. docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.21.0
  216. docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.21.0 ${DOCKERREPOHOST}/${DOCKERREPONAME}/kube-apiserver:v1.21.0
  217. docker push ${DOCKERREPOHOST}/${DOCKERREPONAME}/kube-apiserver:v1.21.0
  218. docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.21.0
  219. docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.21.0 ${DOCKERREPOHOST}/${DOCKERREPONAME}/kube-controller-manager:v1.21.0
  220. docker push ${DOCKERREPOHOST}/${DOCKERREPONAME}/kube-controller-manager:v1.21.0
  221. docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.21.0
  222. docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.21.0 ${DOCKERREPOHOST}/${DOCKERREPONAME}/kube-scheduler:v1.21.0
  223. docker push ${DOCKERREPOHOST}/${DOCKERREPONAME}/kube-scheduler:v1.21.0
  224. docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.21.0
  225. docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.21.0 ${DOCKERREPOHOST}/${DOCKERREPONAME}/kube-proxy:v1.21.0
  226. docker push ${DOCKERREPOHOST}/${DOCKERREPONAME}/kube-proxy:v1.21.0
  227. kubeadm config images pull --config kubeadm-init.yaml
  228. docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.13-0
  229. docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.13-0 ${DOCKERREPOHOST}/${DOCKERREPONAME}/etcd:3.4.13-0
  230. docker push ${DOCKERREPOHOST}/${DOCKERREPONAME}/etcd:3.4.13-0
  231. docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.4.1
  232. docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.4.1 ${DOCKERREPOHOST}/${DOCKERREPONAME}/pause:3.4.1
  233. docker push ${DOCKERREPOHOST}/${DOCKERREPONAME}/pause:3.4.1
  234. docker pull coredns/coredns:latest
  235. docker tag coredns/coredns:latest ${DOCKERREPOHOST}/${DOCKERREPONAME}/coredns:v1.8.0
  236. docker push ${DOCKERREPOHOST}/${DOCKERREPONAME}/coredns:v1.8.0
  237. # 拉取镜像并推送到自己仓库 -------------------------------------------END
  238. ####################################################################################################
  239. # 私服结束
  240. ####################################################################################################
  241. kubeadm config images pull --config kubeadm-init.yaml
  242. #--kubernetes-version="v1.21.0" --pod-network-cidr=10.0.244.0/16
  243. #--image-repository ${DOCKERREPOHOST}/${DOCKERREPONAME}/google_containers
  244. kubeadm init --config kubeadm-init.yaml
  245. kubectl get nodes

K8s配置。--未完成的更多相关文章

  1. k8s配置中心-configmap,Secret密码

    目录 k8s配置中心-configmap,Secret 创建ConfigMap 使用ConfigMap subPath参数 Secret 官方文档 编写secret清单 使用secret 在 Pod ...

  2. K8S配置安装全过程

    V1.11.1https://github.com/kubernetes/kubernetes/releases/tag/v1.11.1环境准备:系统:centos7.2.1511[root@mast ...

  3. Jenkins基于https的k8s配置

    一.摘要 jenkins 连接低版本的k8s时,不需要验证.但是新版本的启用了https和角色管理 二.安装kubernetes插件 登录jenkins,点击 Manage Jenkins --> ...

  4. 可能是Asp.net Core On host、 docker、kubernetes(K8s) 配置读取的最佳实践

    写在前面 为了不违反广告法,我竭尽全力,不过"最佳实践"确是标题党无疑,如果硬要说的话 只能是个人最佳实践. 问题引出 ​ 可能很多新手都会遇到同样的问题:我要我的Asp.net ...

  5. K8s配置配置存活、就绪和启动探测器

    kubelet 使用存活探测器来知道什么时候要重启容器. 例如,存活探测器可以捕捉到死锁(应用程序在运行,但是无法继续执行后面的步骤). 这样的情况下重启容器有助于让应用程序在有问题的情况下更可用. ...

  6. k8s配置集ConfigMap详解

    ConfigMap介绍 ConfigMap和Secret是Kubernetes系统上两种特殊类型的存储卷,ConfigMap对象用于为容器中的应用提供配置文件等信息.但是比较敏感的数据,例如密钥.证书 ...

  7. Tomcat负载均衡配置-未完成

    集群技术是目前非常流行的提高系统服务能力与高可靠性( HA- High Availability )的手段,通过把多个独立的服务器组成一个集群可以实现失效无缝转移.也就是说当有某一台集群中的服务器当机 ...

  8. [k8s]k8s配置nfs做后端存储&配置多nginx共享存储&&statefulset配置

    所有节点安装nfs yum install nfs-utils rpcbind -y mkdir -p /ifs/kubernetes echo "/ifs/kubernetes 192.1 ...

  9. K8S配置多集群访问

    中文官档: http://docs.kubernetes.org.cn/823.html 背景:我们通过会有多个k8s集群,例如集群(cn-k8s)和集群(jp-k8s),那个就需要有一台服务器可以同 ...

随机推荐

  1. C#.NET 国密SM3withSM2签名与验签 和JAVA互通

    C# 基于.NET FRAMEWORK 4.5 JAVA 基于 JDK1.8 一.要点 1.签名算法:SM3withSM2. 2.签名值byte[] 转字符串时,双方要统一,这里是BASE64. 二. ...

  2. java时间工具类型,格式化时间,最近7天 月初 月末 季度 月度 时间格式化 等等

    package com.tz.util; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util. ...

  3. 大数据学习(25)—— 用IDEA搭建Spark开发环境

    IDEA是一个优秀的Java IDE工具,它同样支持其他语言.Spark是用Scala语言编写的,用Scala开发Spark是最舒畅的.当然,Spark也提供Java和Python的API. Java ...

  4. anyRTC SDK 5月迭代:优化自定义加密功能,让通信更安全

    anyRTC SDK 5月上新,新增多种加密类型,让实时音视频通信更安全:新增移动端推流支持1080P分辨率的支持:此外还对事件上报.日志详情.数据统计.网络传输等多项功能进行了优化改进. 以下为更新 ...

  5. Scrapy入门到放弃04:下载器中间件,让爬虫更完美

    前言 MiddleWare,顾名思义,中间件.主要处理请求(例如添加代理IP.添加请求头等)和处理响应 本篇文章主要讲述下载器中间件的概念,以及如何使用中间件和自定义中间件. MiddleWare分类 ...

  6. SpringCloud-Alibaba 最新的 依赖版本管理组合以及 整合gateway遇到的问题

    一般来说,cloud 与 alibaba 拥有版本组合说明文档wiki,不过这里可以做一个最新的组合的分享. <dependencyManagement> <dependencies ...

  7. 53. 最大子序和(剑指 Offer 42)

    53. 最大子序和(剑指 Offer 42) 知识点:数组:前缀和:哨兵:动态规划:贪心:分治: 题目描述 输入一个整型数组,数组中的一个或连续多个整数组成一个子数组.求所有子数组的和的最大值. 要求 ...

  8. [TensorFlow2.0]-手写神经网络实现鸢尾花分类

    本人人工智能初学者,现在在学习TensorFlow2.0,对一些学习内容做一下笔记.笔记中,有些内容理解可能较为肤浅.有偏差等,各位在阅读时如有发现问题,请评论或者邮箱(右侧边栏有邮箱地址)提醒. 若 ...

  9. Java EE-下载安装eclipse并设置环境变量的步骤

    1.下载eclipse: 官网:https://www.eclipse.org/downloads/ (1)点击链接后显示如图 (2)点击Download Packages 下载安装包,不要点击&qu ...

  10. 模拟退火 Simulated annealing

    模拟退火 Simulated annealing 看看有空把图片完善一下好了 模拟退火算法的一些背景 既然要说模拟退火算法,就应该说一下模拟退火算法的背景,模拟退火算法是局部搜索算法的一种扩展,该算法 ...