kubernetes1.13.5安装部署
Kubernetes
一、 Kubernetes介绍
各节点所需组件
Master:docker,kubeadm,kubelet,
|
组件 |
版本 |
备注 |
|
Kubelet |
1.13.5 |
组件 |
|
Kubeadm |
1.13.5 |
组件 |
|
Kubectl |
1.13.5 |
组件 |
|
Docker |
18.0.9.3 |
CgroupDriver: systemd |
|
kube-proxy |
V1.13.5 |
镜像 |
|
kube-controller-manager |
V1.13.5 |
镜像 |
|
kube-apiserver |
V1.13.5 |
镜像 |
|
kube-scheduler |
V1.13.5 |
镜像 |
|
quay.io/coreos/flannel |
v0.11.0-amd64 |
镜像 |
|
Coredns |
1.2.6 |
镜像 |
|
Etcd |
3.2.24 |
镜像 |
|
pause |
3.1 |
镜像 |
节点信息
|
地址 |
角色 |
备注 |
|
172.18.14.90 |
Master |
|
|
172.18.14.91 |
Node |
|
|
172.18.14.92 |
node |
二、 环境配置
Docker安装省略,kubermetes1.13.5版本最高支持docker18.06这里安装的是18.09
一、 以root用户登陆,配置kubernetes镜像源
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
二、 禁用selinux,关闭防火墙
修改配置文件/etc/selinux/ config
SELINUX=disabled
#setenforce 0
或者
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
systemctl stop firewalld
systemctl disable firewalld
三、 设置网桥包经IPTables,core文件生成路径
echo """
vm.swappiness = 0
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
""" > /etc/sysctl.conf
sysctl -p
四、 同步时间
yum install -y ntpdate
ntpdate -u ntp5.aliyun.com
#ntp1-7. aliyun.com都可以,如无法联网则可以自建ntp服务器
五、 更新内核
升级内核(可选),1.14版本支持5.0,1.13.5可忽略警告
$ rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
$ rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
上述命令为启用elrepo仓库,我们可以使用以下命令列出可用的系统内核相关包:
$ yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
之后,就可以安装最新的稳定内核:
$ yum --enablerepo=elrepo-kernel install kernel-ml
重启机器,并选择最新安装的内核(第一个)
进入系统之后,查看内核版本uname -r
设置GRUB默认的内核版本
启动系统时,系统默认选择之前的版本,所以我们需要设置一下GRUB
重新创建内核配置
$ grub2-mkconfig -o /boot/grub2/grubenv
重启
六、 重启# 确认内核版本后,开启IPVS #功能开启暂时未使用
#uname -a
#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"
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 && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep ip_vs
三、 安装kubernetes组件
通过kubeadm安装部署,镜像仓库采用阿里云。安装速度取决于网速
一、 安装组件
#最新版1.14安装测试问题较多,所以用了1.13.5
yum install -y kubelet-1.13.5 kubeadm-1.13.5 kubectl-1.13.5
二、 初始化master
#kubeadm init --kubernetes-version=1.13.5 --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=swap --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers --ignore-preflight-errors=SystemVerification
# --pod-network-cidr使用flannel网络解决方案,默认10.244.0.0/16,如不指使用flannel时则会失败
#--image-repository 使用阿里云镜像源,免去 科xue上网
#--ignore-preflight==SystemVerification 忽略内核版本
#--ignore-preflight-errors=swap 忽略swap设备警告,建议禁止swap设备
出现如下即成功
添加flannel插件:kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
三、 执行脚本
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
四、 记录令牌
l 添加Work节点
kubeadm join 172.18.14.90:6443 --token 17s13m.l22ssehvmm8ka1fy --discovery-token-ca-cert-hash sha256:90775d540aeb69e0e74405a3c3dd754afec0e58c020c312c07afc01b2813a4e7 --ignore-preflight-errors=swap --ignore-preflight-errors=SystemVerification
l 查看状态
# kubectl get node
# kubectl get pod --all-name-spaces
四、 安装dashboard
详情可见:https://github.com/kubernetes/dashboard
个人参考:https://www.jianshu.com/p/c6d560d12d50
一、 下载镜像
#docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kubernetes-dashboard-amd64
更名
#docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kubernetes-dashboard-amd64 k8s.gcr.io/kubernetes-dashboard-amd64
二、 部署
#master节点执行如下
# kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
#开启代理
# kubectl proxy
如下所示已正常运行。

测试发现dashboard的证书过期,用浏览器无法访问。
三、 制作证书
命令参考:alias ksys='kubectl -n kube-system'

1) 生成证书通过openssl生成自签名证书
#cd /root/keys
# openssl genrsa -out dashboard.key 2048
# openssl req -new -out dashboard.csr -key dashboard.key -subj '/CN=172.18.14.90‘
# openssl x509 -req -in dashboard.csr -signkey dashboard.key -out dashboard.crt
# openssl x509 -req -in dashboard.csr -signkey dashboard.key -out dashboard.cr
#openssl x509 -in dashboard.crt -text -nooutt
这样就有了证书文件dashboard.crt 和 私钥 dashboad.key
2) 下载yaml,并修改
|
#wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml |
#删除Dashboard Secret字段中的内容
#修改service 为nodeport类型,固定访问端口
修改前
|
kind: Service apiVersion: v1 metadata: labels: k8s-app: kubernetes-dashboard name: kubernetes-dashboard namespace: kube-system spec: ports: - port: 443 targetPort: 8443 selector: k8s-app: kubernetes-dashboard |
修改后
|
kind: Service apiVersion: v1 metadata: labels: k8s-app: kubernetes-dashboard name: kubernetes-dashboard namespace: kube-system spec: type: NodePort ports: - port: 443 nodePort:30003 #固定30003端口 targetPort: 8443 selector: k8s-app: kubernetes-dashboard |
3) 生成secret
#ksys create secret generic kubernetes-dashboard-certs --from-file=dashboard.key --from-file=dashboard.crt
#ksys get secret | grep dashboard
#ksys describe secret kubernetes-dashboard-certs
如下图所示
4) 重新apply yaml文件
#kubectl apply -f kubernetes-dashboard.yaml
查看服务状态
5) 通过浏览器访问:
四、 设置DashBoard-身份验证
登录dashboard 的时候支持Kubeconfig 和token 两种认证方式,Kubeconfig 中也依赖token 字段,所以生成token 这一步是必不可少的。
生成token
我们创建一个admin用户并授予admin 角色绑定,使用下面的yaml文件创建admin用户并赋予他管理员权限,然后就可以通过token 登陆dashbaord,这种认证方式本质实际上是通过Service Account 的身份认证加上Bearer token请求 API server 的方式实现,参考 Kubernetes 中的认证
1)
|
kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1beta1 metadata: name: admin annotations: rbac.authorization.kubernetes.io/autoupdate: "true" roleRef: kind: ClusterRole name: cluster-admin apiGroup: rbac.authorization.k8s.io subjects: - kind: ServiceAccount name: admin namespace: kube-system --- apiVersion: v1 kind: ServiceAccount metadata: name: admin namespace: kube-system labels: kubernetes.io/cluster-service: "true" addonmanager.kubernetes.io/mode: Reconcile |
.在node节点上创建:vim admin-sa.yaml
2) 执行如下
#kubectl create -f admin-sa.yaml
#查看是否成功
3) 获取token
#kubectl get secret gitlab-admin -o jsonpath="{['data']['token']}" | base64 --decode
屏幕输出相应token,输入就可以登陆
五、 记录坑
l 下载镜像
可通过
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/镜像名字:版本号
注意冒号,然后tag自己所需的镜像名
l master开放6443端口(建议禁用firewalld和iptables)
l 查看kubelet报错详细信息
journalctl -xeu kubelet
l kubelet增加启动参数
建议禁用swap设备
l 设置docker 驱动
#more /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"]
}
#systemctl daemon-reload
# systemctl restart docker
#docekr info 查看是否更改
kubernetes1.13.5安装部署的更多相关文章
- OEMCC 13.2 安装部署
需求:安装部署OEM 13.2 环境:两台主机,系统RHEL 6.5,分别部署OMS和OMR: OMS,也就是OEMCC的服务端 IP:192.168.1.88 内存:12G+ 硬盘:100G+ OM ...
- OEMCC 13.2 集群版本安装部署
之前测试部署过OEMCC 13.2单机,具体可参考之前随笔: OEMCC 13.2 安装部署 当时环境:两台主机,系统RHEL 6.5,分别部署OMS和OMR: OMS,也就是OEMCC的服务端 IP ...
- Ubuntu16.04安装kubernetes1.13集群
Ubuntu16.04安装kubernetes1.13集群 最新的安装可以使用以下方式:https://www.cnrancher.com/docs/rancher/v2.x/cn/overview/ ...
- [转帖]Breeze部署kubernetes1.13.2高可用集群
Breeze部署kubernetes1.13.2高可用集群 2019年07月23日 10:51:41 willblog 阅读数 673 标签: kubernetes 更多 个人分类: kubernet ...
- Hive0.13.1介绍及安装部署
一.简介 hive由Facebook开源用于解决海量结构化日志的数据统计.hive是基于Hadoop的一个数据仓库工具,是基于Hadoop之上的,文件是存储在HDFS上的,底层运行的是MR程序.hiv ...
- Linux平台oracle 11g单实例 + ASM存储 安装部署 快速参考
操作环境:Citrix虚拟化环境中申请一个Linux6.4主机(模板)目标:创建单机11g + ASM存储 数据库 1. 主机准备 2. 创建ORACLE 用户和组成员 3. 创建以下目录并赋予对应权 ...
- Greenplum 数据库安装部署(生产环境)
Greenplum 数据库安装部署(生产环境) 硬件配置: 16 台 IBM X3650, 节点配置:CPU 2 * 8core,内存 128GB,硬盘 16 * 900GB,万兆网卡. 万兆交换机. ...
- OpenStack Keystone安装部署流程
之前介绍了OpenStack Swift的安装部署,采用的都是tempauth认证模式,今天就来介绍一个新的组件,名为Keystone. 1. 简介 本文将详细描述Keystone的安装部署流程,并给 ...
- (转)ZooKeeper 笔记(1) 安装部署及hello world
ZooKeeper 笔记(1) 安装部署及hello world 先给一堆学习文档,方便以后查看 官网文档地址大全: OverView(概述) http://zookeeper.apache.or ...
随机推荐
- Adobe XD 介绍
Adobe XD 关于XD这个软件我也是经过别人介绍才知道的,刚出来每两年,之前是没有中文版的,最近才更新了中文版,使用起来更加方便了. 这就是主界面,界面十分简洁但又一目了然,同时主界面还会有链接, ...
- Android通过Chrome Inspect调试WebView出现404页面的解决方法
无论是调试Web页面还是调试Hybrid混合应用,只要是调试Android的webview,都需要使用Chrome://inspect进行调试.但是国内开发者会出现404 Not Found错误: 解 ...
- RCNN的流程
步骤一: 找到一个CNN分类模型 步骤二: 对于这个模型修改最后的分类层,为21类,去掉最后一个全连接层 步骤三: 根据选择性搜索提取图像的候选区域(框) 对于候选框修改大小以适应CNN输入,然后得出 ...
- [USACO11DEC]牧草种植Grass Planting
图很丑.明显的树链剖分,需要的操作只有区间修改和区间查询.不过这里是边权,我们怎么把它转成点权呢?对于E(u,v),我们选其深度大的节点,把边权扔给它.因为这是树,所以每个点只有一个父亲,所以每个边权 ...
- Data type
先放官方文档: https://dev.mysql.com/doc/refman/5.5/en/data-types.html MySQL支持多种类型的SQL数据类型:数字类型,日期和时间类型,字符串 ...
- java.lang.IllegalAccessError: org.apache.commons.dbcp.DelegatingPreparedStatement.isClosed()Z
做spring和mybaits整合时出现的错误,让这个问题困扰了一早上,通过查资料终于把这个问题解决了 具体问题描述: java.lang.IllegalAccessError: org.apache ...
- SecureCRT通过密钥登录(网上也有很多教程,但是有些不详细,此教程本人亲测)
1.先打开SecureCRT,标题标--工具---创建公钥,如图: 2.点击创建公钥,弹出选项点下一步 3.继续点下一步: 4.继续点下一步: 5.继续点下一步(密钥长度默认1024即可),生成密钥需 ...
- [批处理] Git中log的使用
1.获取两个提交之间的日志: git log SHA-1_A.. SHA-1_B--pretty=format:"%cd: %s" --date=format:%Y%m%d > ...
- 移动App专项测试
移动App测试实战—专项测试 转自:http://www.51testing.com/html/58/n-3713758.html 我们在进行了手工的功能测试之后,也开发了一些自动化测试用例,并且做了 ...
- react中对于redux的封装
const createStore = (reducer)=>{ //默认的state对象 let state = {}; //将所有订阅的事件存在在这个数组中 let listeners = ...