k8s安装
- master节点内存不能小于2G
- 虚拟机采用vitualbox,网络可选用桥接网卡的形式,虚机可访问外网、可互访、可与宿主机通信
- dashboard的token失效时间更改
- 测试部署采用1个部署节点,1个(3个)master节点,1个(3个)node节点
- 部署采用kubeasz AllinOne的方式部署即可
- 百度云资料下载可通过BaiduPCS-Go工具进行下载
- 每台机器需要配置好 SSH 互访
- 安装完成后,主要在部署节点进行 k8s 操作
dashboard设置
- 修改dashboard的token过期时间
# 在dashboar的部署文件修改如下参数
args:
- --auto-generate-certificates
- --token-ttl=43200 //增加该参数,43200单位为秒
- 获取登陆dashboard的token
# 获取dashboard的token
kubectl get secrets -n kube-system
# 其中admin-user开头的即为dashboard使用的账号
kubectl describe secrets -n kube-system admin-user-token-dvcqz
# 获取token或者如下一步获取
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')
helm安装
# 客户端
# 下载helm 客户端的tgz包,需要翻墙下载
# 例如 wget https://storage.googleapis.com/kubernetes-helm/helm-v2.9.1-windows-amd64.zip
# 服务端安装
helm init --tiller-image jmgao1983/tiller:v2.9.1
# 客户端与服务器的版本必须匹配,可输入命令
helm version 查看
# 使用helm安装软件 helm install
# 直接下载未成功,需要将helm的chart的
# Git仓库克隆到本地下载,比如安装traefik ingress
使用如下命令
helm install --name traefik -f value.yaml ./traefik
# 如果k8s项目采用了RBAC授权,需要先创建traefik所使用的serviceaccount,并授权
# value.yaml作如下修改
serviceType: NodePort
ssl.enabled: true # 开启ssl
ssl.enforced: true # 80跳转到443
acme.enabled: true # 开启acme(自动创建使用let's encrypt证书)
acme.email: xiechao1211@126.com
acme.domains.enabled: true
acme.domains.domainsList: "*.example.con"
# 泛域名证书
# 以下4项为 let's encrypt的证书申请要求,采用自动DNS的txt记录认证,通过指定的DNS服务器提供的API,会自动往域名的DNS解析中写入一条txt记录
challengeType: "dns-01"
dnsProvider.name: godaddy
dnsProvider.godaddy.GODADDY_API_KEY: "KEY"
dnsProvider.godaddy.GODADDY_API_SECRET: "SECRET"
安装heapster相关
安装完成后dashborad自动增加显示节点性能图表
# 直接使用以下命令即可安装 heapster influxdb grafana
# 安装完成后,稍等1分钟即可在dashboard中看到CPU 内存消耗相关数据
kubectl create -f /etc/ansible/manifests/heapster/
NFS持久化处理
- 搭建服务端(Ubuntu)
apt-get install nfs-kernel-server
mkdir /nfs/data
chmod a+rw /nfs/data
vi /etc/exports
# 增加如下一行
/nfs/data *(rw,sync,no_subtree_check)
# 将 /nfs/data 开放,* 代表所有ip可访问
# rw是读写权限,sync是同步权限,no_subtree_check表示如果输出目录是一个子目录,nfs服务器不检查其父目录的权限
- 安装客户端
# 所有Node机器上
apt-get install -y nfs-common
# 创建nfs需要用到的serviceaccount
# 参考 nfs-serviceaccount.yaml
# 创建 nfs部署服务(用于挂载nfs),参考nfs.yaml,其中的nfs挂载地址也可换成其他服务商的挂载地址(如阿里云)
# 创建StorgeClass进行使用,参考 sc.yaml
nfs部署及StoregeClass均无物创建之后,可进行使用,如在traefik中使用了ACME的持久化处理,该步骤需要先处理
- CentOS
参考如下:Linux---centos安装配置并挂载NFS
停止部署/启动部署最快捷的方式
# 伸缩部署为0即相当于停止了部署运行或者
kubectl scale deploy deploy-name --replicas=0
kubectl scale deploy deploy-name --replicas=1
# 即完成了部署的重启工作
ConfigMap创建和挂载
# 创建 configmap
kubectl create configMap name --from-file=PATH
# 如果不给name 默认文件名为configmap的KEY
# 挂载configmap可参考如下:
spec:
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
volumeMounts:
- name: nginx-config-volume
mountPath: /etc/nginx/nginx.conf
subPath: nginx.conf
# 关键在subPath这个参数,必须指定文件
volumes:
- name: nginx-config-volume
configMap:
name: nginx-conf
网友评论