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)               通过浏览器访问:

https://masterip:30003

四、     设置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安装部署的更多相关文章

  1. OEMCC 13.2 安装部署

    需求:安装部署OEM 13.2 环境:两台主机,系统RHEL 6.5,分别部署OMS和OMR: OMS,也就是OEMCC的服务端 IP:192.168.1.88 内存:12G+ 硬盘:100G+ OM ...

  2. OEMCC 13.2 集群版本安装部署

    之前测试部署过OEMCC 13.2单机,具体可参考之前随笔: OEMCC 13.2 安装部署 当时环境:两台主机,系统RHEL 6.5,分别部署OMS和OMR: OMS,也就是OEMCC的服务端 IP ...

  3. Ubuntu16.04安装kubernetes1.13集群

    Ubuntu16.04安装kubernetes1.13集群 最新的安装可以使用以下方式:https://www.cnrancher.com/docs/rancher/v2.x/cn/overview/ ...

  4. [转帖]Breeze部署kubernetes1.13.2高可用集群

    Breeze部署kubernetes1.13.2高可用集群 2019年07月23日 10:51:41 willblog 阅读数 673 标签: kubernetes 更多 个人分类: kubernet ...

  5. Hive0.13.1介绍及安装部署

    一.简介 hive由Facebook开源用于解决海量结构化日志的数据统计.hive是基于Hadoop的一个数据仓库工具,是基于Hadoop之上的,文件是存储在HDFS上的,底层运行的是MR程序.hiv ...

  6. Linux平台oracle 11g单实例 + ASM存储 安装部署 快速参考

    操作环境:Citrix虚拟化环境中申请一个Linux6.4主机(模板)目标:创建单机11g + ASM存储 数据库 1. 主机准备 2. 创建ORACLE 用户和组成员 3. 创建以下目录并赋予对应权 ...

  7. Greenplum 数据库安装部署(生产环境)

    Greenplum 数据库安装部署(生产环境) 硬件配置: 16 台 IBM X3650, 节点配置:CPU 2 * 8core,内存 128GB,硬盘 16 * 900GB,万兆网卡. 万兆交换机. ...

  8. OpenStack Keystone安装部署流程

    之前介绍了OpenStack Swift的安装部署,采用的都是tempauth认证模式,今天就来介绍一个新的组件,名为Keystone. 1. 简介 本文将详细描述Keystone的安装部署流程,并给 ...

  9. (转)ZooKeeper 笔记(1) 安装部署及hello world

    ZooKeeper 笔记(1) 安装部署及hello world   先给一堆学习文档,方便以后查看 官网文档地址大全: OverView(概述) http://zookeeper.apache.or ...

随机推荐

  1. 三目运算符与Scanner类

    1.三目运算符(条件运算符)格式:X ? Y : ZX表达式必须是boolean类型 的表达式执行流程:首先计算X表达式的结果,如果X的结果为true,那么整个表达式的结果就是Y的值如果X的结果为tr ...

  2. VMware Workstation 14永久激活密钥

    VMware Workstation是一款功能强大的桌面虚拟计算机软件,简单来说就是最强的中文虚拟机了,可以在桌面上运行不同的操作系统 VMware workstation 14永久激活密钥 : CG ...

  3. centos7安装git

    1.安装git依赖包 yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUti ...

  4. ASP.NET Core WebApi使用Swagger生成api

    引言 在使用asp.net core 进行api开发完成后,书写api说明文档对于程序员来说想必是件很痛苦的事情吧,但文档又必须写,而且文档的格式如果没有具体要求的话,最终完成的文档则完全取决于开发者 ...

  5. 论文笔记【三】A Deep Dive into Word Sense Disambiguation with LSTM

    深入理解LSTM词义消歧 Minh Le,Marten Postma,Jacopo Urbani和Piek Vossen 阿姆斯特丹自由大学语言,文学和传播系 阿姆斯特丹自由大学计算机科学系 摘要 基 ...

  6. 1.3:Render Pipeline and GPU Pipeline

    文章著作权归作者所有.转载请联系作者,并在文中注明出处,给出原文链接. 本系列原更新于作者的github博客,这里给出链接. 在学习SubShader之前,我们有必要对 Render Pipeline ...

  7. ElasticSearch(十一)Elasticsearch清空指定Index/Type数据

    POST /index_name/type_name/_delete_by_query?conflicts=proceed { "query": { "match_all ...

  8. ensp 单臂路由实验

    搭建如下拓扑 交换机: 创建vlan10 20 g0/0/1接口设置访问类型为access,加入到vlan10:g0/0/2接口设置访问类型为access,加入到vlan20 g0/0/3接口设置为t ...

  9. oracle网络服务之beq协议和SDU优化(性能提升可达30%)

    oracle网络服务之beq协议和SDU优化(性能提升可达30%) 12.3.1  BEQ协议 如果Oracle数据库服务端和客户端在同一台机器上,可以使用BEQ连接,BEQ连接采用进程间直接通信,不 ...

  10. Vue PC后台系统组件大全

    1.https://vue.ant.design/ 2.http://element-cn.eleme.io/#/zh-CN 3.https://www.iviewui.com/ 4.https:// ...