K8s initial start

本文主要介绍

1、k8s初步体验(minikube)
2、在aws上配置k8s集群
3、安装helm服务,安装可视化kubeapps管理工具
4、安装jenkins mysql, confluence 等常见服务
5、设置aws的gp2磁盘为动态可扩容
6、配置jenkins ,能够动态使用k8s创建agent,进行git构建

 

体验k8s

如果想本机体验k8s,可以安装一个minikube
minikube安装的过程中会把k8s依赖的服务(很多)都自动装好。

先安装一个docker for mac
参考文章https://kubernetes.io/docs/tasks/tools/install-minikube/

brew cask install minikube
minikube start
由于谷歌服务处于被隔离,所以需要加上一些参数

minikube start --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers --vm-driver=hyperkit --insecure-registry=http://f1361db2.m.daocloud.io
因为上面的配置只会修改部分请求,如果还是不行,自行设置https_proxy

kubectl 101
https://kubernetes.feisky.xyz/ji-chu-ru-men/101

kubectl run --image=nginx:alpine nginx-app --port=80
一般用的比较多的命令是

kubectl get pods //查看所有pods
kubectl get deployments
kubectl get service

kubectl apply -f xxx.yaml
kubectl get pod xxx -o yaml | less //获取一个pod信息
kubectl edit pod xxx // 编辑pod信息
有关 k8s的pod deployment service的概念 这里
https://sheppard.in/2018/what-and-why-of-kubernetes/
里面有漫画的形式解答,容易理解

 

在aws上搭建k8s集群

搭建k8s集群比较复杂,如果是有自己的私有云环境,推荐参考 https://github.com/maguowei/kubernetes-for-china 这个项目。
涵盖了 kubeadm, kubelet and kubectl 和 helm包管理 和 rook(快存储&对象存储),然后剩余的工具可以通过helm安装上(ingress等)

下面是在aws上安装k8s教程:
因为aws已经提供了动态volume,loadbalancer等功能,所以直接使用就行,无需再搭建。
手工配置网络和各个服务会比较复杂,这里直接使用了kops工具,通过脚本自助安装

参考https://github.com/kubernetes/kops/blob/master/docs/aws.md文章
1、在aws管理界面 右上角,我的安全凭证创建访问密钥
2、参考 上面的 aws文档,设置好 IAM user 账号
3、克隆 https://github.com/nwcdlabs/kops-cn.git 项目,并且按照readme修改相关的makefile
networking 改成=flannel 兼容性好点

然后 make create-cluster 等待生成

如何登录master或者node主机?
“ssh -i ~/.ssh/私钥 core@ip-xx-xx-xx-xx.cn-north-1.compute.internal”

 

安装helm

安装helm (容器包管理
curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | bash

$ kubectl apply -f https://gist.githubusercontent.com/pahud/14e6cc08f3a7e65cd9b0e8bed454a901/raw/954d71614dda911c4f7960f0d18687fa1ea093fa/helm-sa-rolebinding.yaml

helm init --client-only --stable-repo-url https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts/
helm repo add incubator https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts-incubator/
helm repo update

helm init --service-account tiller --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.13.1 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

 

后续升级 tiller

export TILLER_TAG=v2.xx
kubectl --namespace=kube-system set image deployments/tiller-deploy tiller=registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:$TILLER_TAG
安装kubeapps (可选)
https://github.com/kubeapps/kubeapps
这是一个包管理的web ui,根据repo的 readme 参考安装

 

安装jenkins

helm install stable/jenkins

找到 jenkins 的url进入
然后参考 https://www.qikqiak.com/post/kubernetes-jenkins1/ 里面的说明

kubernetes plugin 应该已经安装好
点击test connection
如果失败 需要设置 rolebinding

 

Miscs

kubectl create clusterrolebinding permissive-binding --clusterrole=cluster-admin --user=admin --user=kubelet --group=system:serviceaccounts:default
docker image 可以保持默认,或者修改成文章中的 cnych/jenkins:jnlp

修改成文章中的 cnych/jenkins:jnlp 要加上 /var/run/docker.sock 和 /home/jenkins/.kube ,这样就有了docker in docker 的功能(即在jenkins构建的时候能有docker命令 build镜像)

如果agent出错,去jenkins配置里和 kubectl get pods jenkin-xxx -o yaml 查看下50000端口是否打开

安装mysql
helm search mysql
找到有主从的mysql就可以装了

安装 confluence
参考 https://github.com/21paradox/atlassian-kubernetes/tree/master/confluence
kubectl apply -f ./prod_volume_confluence_claim.yml
kubectl apply -f ./prod_confluence_deployment.yml

设置k8s在aws的磁盘为可扩容 ExpandInUsePersistentVolumes
why ?
当发现磁盘只有8GB,而且已经用满了的时候,再想着扩容就已经晚了,因为目前默认gp2无法扩容(没打开flag属性)

参考 https://akomljen.com/easy-way-to-resize-kubernetes-persistent-volumes/

ssh -i ~/.ssh/id_rsa core@adasdad.amazonaws.com.cn 上主机(每个master都要改)
sudo su

编辑 /etc/kubernetes/manifests/kube-apiserver.manifest
增加
–enable-admission-plugins=PersistentVolumeClaimResize
–feature-gates=ExpandInUsePersistentVolumes=true

上面2个 都是可扩容磁盘的设置
systemctl restart kubelet

编辑现有的 gp2

kubectl edit STORAGECLASS gp2
增加 allowVolumeExpansion: true

kubectl edit pvc data-intentional-emu-mysql-master-0
把spec里的storage 更改并保存,比如8Gi 改成 9Gi

然后 aws --region cn-north-1 ec2 describe-volumes --filters Name=tag-value,Values=“data-intentional-emu-mysql-master-0” --query ‘Volumes[0].Size’
看看磁盘更改是否已经生效

如果kubectl get pvc 发现磁盘还是8g,可以过一天观察一下

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值