kubeadm安装kubernetes 1.12版本
直接写过程,有些描述就省略了
关于kubeadm安装k8s 1.11.2版本可以查看:https://www.cnblogs.com/shansongxian/p/9753603.html 首先查看下k8s 1.12版的changlog有哪些改动
github地址:https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.12.md#changelog-since-v1120
终于支持docker 18.06了 首先说下环境:
系统:centos 7 1708版本
地址:192.168.237.128(演示环境无额外Nodes节点机器)
docker: 18.06
k8s: 1.12.1
最低配置:2核2G 第一步调整下系统内核参数,hosts修改,加载ipvs模块,关闭swap,selinux,firewall,系统时间
192.168.237.128 k8s-master
cat <<EOF > /etc/sysctl.d/k8s.conf
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
vm.swappiness = 0
EOF
sysctl --system
yum install ipset ipvsadm conntrack-tools.x86_64 -y cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
ipvs_modules="ip_vs ip_vs_lc ip_vs_wlc ip_vs_rr ip_vs_wrr ip_vs_lblc ip_vs_lblcr ip_vs_dh ip_vs_sh ip_vs_fo ip_vs_nq ip_vs_sed ip_vs_ftp nf_conntrack_ipv4"
for kernel_module in \${ipvs_modules}; do
/sbin/modinfo -F filename \${kernel_module} > /dev/null 2>&1
if [ $? -eq 0 ]; then
/sbin/modprobe \${kernel_module}
fi
done
EOF
chmod 755 /etc/sysconfig/modules/ipvs.modules
sh /etc/sysconfig/modules/ipvs.modules && lsmod | grep ip_vs
systemctl stop firewalld && systemctl disable firewalld
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
sed -i 's/.*swap.*/#&/' /etc/fstab
echo "*/5 * * * * /usr/sbin/ntpdate time.windows.com > /dev/null 2>&1" >> /var/spool/cron/root
重启下系统
第二步安装docker
yum install container-selinux libseccomp libtool-ltdl -y
rpm -ivh https://mirrors.ustc.edu.cn/docker-ce/linux/centos/7/x86_64/stable/Packages/docker-ce-18.06.1.ce-3.el7.x86_64.rpm
systemctl start docker && systemctl enable docker
cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://8vtb3cuu.mirror.aliyuncs.com"]
}
EOF
systemctl restart docker
第三步安装kubeadm
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF 默认安装kubeadm kubectl kubelet cri-tools kubernetes-cni socat
查看安装版本
yum list kubeadm --showduplicates
yum list kubectl --showduplicates
yum list kubelet --showduplicates
yum list kubernetes-cni --showduplicates 不指定版本默认安装最新版1.12.1
yum install kubeadm -y
第四步利用kubeadm安装k8国内无法下载谷歌镜像,使用anjia0532镜像,更改为默认kubeadm中的镜像名称
kubeadm config images list --kubernetes-version v1.12.1 使用shell脚本快速操作:
#!/bin/bash
KUBE_VERSION=v1.12.1
KUBE_PAUSE_VERSION=3.1
ETCD_VERSION=3.2.24
DNS_VERSION=1.2.2 ANJIA_URL=anjia0532/google-containers
GCR_UR=k8s.gcr.io images=(kube-apiserver:${KUBE_VERSION}
kube-controller-manager:${KUBE_VERSION}
kube-scheduler:${KUBE_VERSION}
kube-proxy:${KUBE_VERSION}
pause:${KUBE_PAUSE_VERSION}
etcd:${ETCD_VERSION}
coredns:${DNS_VERSION}) for imageName in ${images[@]} ; do
docker pull $ANJIA_URL.$imageName
docker tag $ANJIA_URL.$imageName $GCR_UR/$imageName
docker rmi $ANJIA_URL.$imageName
done 打印kubeadm默认配置,kubeadm配置文件按照默认配置进行修改
kubeadm config print-default kubeadm v1.12 kubeProxy默认已经使用ipvs模式,在v1.11.x中还需要在配置中指定,如果服务器有多个网卡地址,还需要指定出口IP,使用参数--apiserver-advertise-address=<ip-address>
必需要指定的参数是Pod的网段,使用参数--pod-network-cidr 除了使用参数方式外还可以创建kubeadm-config.yaml文件进行定制化 这里使用加载yaml配置文件的方式,也是推荐的方法
指定10.244.0.0/16网段作为Pod的地址段,也是Flannel网络的默认网段
kind and apiVersion是需要在yaml中强制拥有的信息, apiVersion: kubeadm.k8s.io/v1alpha3
kind: ClusterConfiguration
kubernetesVersion: v1.12.1
networking:
dnsDomain: cluster.local
podSubnet: 10.244.0.0/16
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: "ipvs" 执行Init创建集群
systemctl enable kubelet.service
kubeadm init --config kubeadm-config.yaml
kubeadm会默认安装Coredns kube-proxy两个插件 root用户直接添加环境变量/etc/profile
kubectl需要读取授权信息访问kubernetes集群
export KUBECONFIG=/etc/kubernetes/admin.conf 非root用户则执行屏幕输出的
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
记录输出的Kubeadm join语句,用于添加工作节点 查看集群状态
kubectl get cs
查看节点,pods
kube get nodes
kube get pods,svc -n kube-system
第五步添加Pod网络组件
必须在任何应用程序之前部署网络。此外,CoreDNS将不会在安装网络之前启动
注意,kubeadm默认设置更安全的群集并强制使用RBAC。确保您的网络清单支持RBAC 我这里master和Nodes都在同一台机器,默认Master是不允许运行用户Pod的
执行:
kubectl taint nodes k8s-master node-role.kubernetes.io/master:NoSchedule- 部署Flannel网络
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml 有多个网卡的话,需要在kube-flannel.yml中使用--iface参数指定集群主机内网网卡的名称,(集群中的主机通过内网网段通信)否则可能会出现dns无法解析。flanneld启动参数加上--iface=<iface-name>
args:
- --ip-masq
- --kube-subnet-mgr
- --iface=ens33 #默认Pod网段(为kubeadm.yaml定义的Pod网段,如果不是10.244.0.0/16则需要修改)
net-conf.json: |
{
"Network": "10.244.0.0/16",
"Backend": {
"Type": "vxlan"
}
} #应用flannel
kubectl apply -f kube-flannel.yml 若出现imagepullerror无法下载quay.io/coreos/flannel:v0.10.0-amd64时,使用下面方法:
docker pull registry.cn-shenzhen.aliyuncs.com/cp_m/flannel:v0.10.0-amd64
docker tag registry.cn-shenzhen.aliyuncs.com/cp_m/flannel:v0.10.0-amd64 quay.io/coreos/flannel:v0.10.0-amd64
docker rmi registry.cn-shenzhen.aliyuncs.com/cp_m/flannel:v0.10.0-amd64
第六步 配置treak ingress
kubectl apply -f https://raw.githubusercontent.com/containous/traefik/master/examples/k8s/traefik-rbac.yaml #使用DaemonSets部署方式
kubectl apply -f https://raw.githubusercontent.com/containous/traefik/master/examples/k8s/traefik-ds.yaml wget https://raw.githubusercontent.com/containous/traefik/master/examples/k8s/ui.yaml
修改ui.yaml中host域名
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: traefik-web-ui
namespace: kube-system
spec:
rules:
- host: www.abc.com
http:
paths:
- path: /
backend:
serviceName: traefik-web-ui
servicePort: web 添加hosts映射访问域名

第七步配置Dashboard
下载anjia镜像
docker pull anjia0532/google-containers.kubernetes-dashboard-amd64:v1.10.0
docker tag anjia0532/google-containers.kubernetes-dashboard-amd64:v1.10.0 k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.0
docker rmi anjia0532/google-containers.kubernetes-dashboard-amd64:v1.10.0 wget https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml 在yaml文件末尾加上
type: NodePort
使用此方法暴露dashboard服务 创建rdbc授权文件kubernetes-dashboard-rbac.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kube-system ---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin-user
namespace: kube-system #应用定义文件
kubectl apply -f kubernetes-dashboard.yaml
kubectl apply -f kubernetes-dashboard-rbac.yaml
#查看admin-user用户token
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}') #复制token,在浏览器上选择令牌方式
使用火狐浏览器,https://ip:port

kubeadm安装kubernetes 1.12版本的更多相关文章
- 转 centos7使用kubeadm安装kubernetes 1.12版本
最近在学习go 模板语法 还是有点小忙 ! 感觉写这种 kuberadm 搭建 kubernetes 还是有点水 好吧 可能我太高调了 前前后后搭过四 五次了 ! kuberadm 搭建 ...
- 使用kubeadm安装Kubernetes 1.12
使用kubeadm安装Kubernetes 1.12 https://blog.frognew.com/2018/10/kubeadm-install-kubernetes-1.12.html 测试环 ...
- 使用kubeadm 安装 kubernetes 1.12.0
目录 简介: 架构说明: 系统配置: 1.1 关闭防火墙 1.2 禁用SELinux 1.3 关闭系统Swap 1.4 安装docker 使用kubeadm部署Kubernetes: 2.1 安装ku ...
- Centos7 使用 kubeadm 安装Kubernetes 1.13.3
目录 目录 什么是Kubeadm? 什么是容器存储接口(CSI)? 什么是CoreDNS? 1.环境准备 1.1.网络配置 1.2.更改 hostname 1.3.配置 SSH 免密码登录登录 1.4 ...
- 使用kubeadm 安装 kubernetes 1.15.1
简介: Kubernetes作为Google开源的容器运行平台,受到了大家的热捧.搭建一套完整的kubernetes平台,也成为试用这套平台必须迈过的坎儿.kubernetes1.5版本以及之前,安装 ...
- 使用 kubeadm 安装 kubernetes v1.16.0
近日通过kubeadm 安装 kubernetes v1.16.0,踩过不少坑,现记录下安装过程. 安装环境: 系 统:CentOS Linux release 7.6 Docke ...
- Kubernetes(K8s) 安装(使用kubeadm安装Kubernetes集群)
背景: 由于工作发生了一些变动,很长时间没有写博客了. 概述: 这篇文章是为了介绍使用kubeadm安装Kubernetes集群(可以用于生产级别).使用了Centos 7系统. 一.Centos7 ...
- kubeadm 安装Kubernetes 1.16.3 (CentOS7+IPVS+Calico)
目录 · . 一.更新系统内核(全部节点) · . 二.基础环境设置(全部节点) · . 1.修改 Host · . 2.修改 Hostname · . 3.主机时间同步 · . 4.关闭 ...
- kubeadm安装kubernetes V1.11.1 集群
之前测试了离线环境下使用二进制方法安装配置Kubernetes集群的方法,安装的过程中听说 kubeadm 安装配置集群更加方便,因此试着折腾了一下.安装过程中,也有一些坑,相对来说操作上要比二进制方 ...
随机推荐
- POJ1475 Pushing Boxes 华丽丽的双重BFS
woc累死了写了两个半小时...就是BFS?我太菜了... 刚开始以为让人预先跑一遍BFS,然后一会儿取两节加起来就好了,结果发现求出来的最短路(就是这个意思)会因箱子的移动而变化....我死了QWQ ...
- Marlin (思维)
The city of Fishtopia can be imagined as a grid of 44 rows and an odd number of columns. It has two ...
- webpack 4.0 安装出现的小问题 (One CLI for webpack must be installed)
安装的webpack版本是4.11.0,运行命令npm start 提示:One CLI for webpack must be installed. These are recommended ch ...
- 文献综述九:Oracle数据库性能模型的研究
一.基本信息 标题:Oracle数据库性能模型的研究 时间:2018 出版源:数字技术与应用 文件分类:对框架的研究 二.研究背景 帮助运维人员分析数据库性能,发现问题,指导调优. 三.具体内容 文献 ...
- Springboot与MyBatis简单整合
之前搭传统的ssm框架,配置文件很多,看了几天文档才把那些xml的逻辑关系搞得七七八八,搭起来也是很麻烦,那时我完全按网上那个demo的版本要求(jdk和tomcat),所以最后是各种问题没成功跑起来 ...
- linux运维之top命令
统计信息区前五行是系统整体的统计信息: 第一行是任务队列信息,同 uptime 命令的执行结果.其内容如下: 01:06:48 当前时间 up 1:22 系统运行时间,格式为时:分 1 user 当 ...
- (转)shell命令:echo命令详解
shell命令:echo命令详解 原文:https://www.cnblogs.com/xyz0601/archive/2015/04/23/4450736.html 功能说明:显示文字. 语 法:e ...
- 【CAD】自定义实体的步骤(转)
本文介绍了构造自定义实体的步骤.必须继承的函数和必须注意的事项 1.新建一个从AcDbEntity继承的类,如EntTest,必须添加的头文件: "stdarx.h"," ...
- Developing crm service based on apache cxf
1 数据库环境搭建 创建数据库boscrm 执行脚本: 脚本内容: /* Navicat MySQL Data Transfer Source Server : root Source Server ...
- pat1003. Emergency (25)
1003. Emergency (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue As an emerg ...