K8SV1.18.0搭建流程+jenkins,包括dashboard ----参考众多博主。。不明白的可联系(wx:1095159827)
K8S是什么?k8s是基于容器技术的分布式架构领先方案。它是google严格保密十几年的秘密武器Brog的一个开源版本;是Google开源的一个容器编排引擎,支持自动化部署、大规模可伸缩、应用容器化管理。K8S用来做什么?说白了就是管理docker容器的,通过yaml文件生成容器 不需要手动去构建,可以生成多个容器,在一个容器挂掉的情况下,自动生成新的容器,配合jenkin做一个持续集成(C...
·
K8S是什么?
k8s是基于容器技术的分布式架构领先方案。它是google严格保密十几年的秘密武器Brog的一个开源版本;是Google开源的一个容器编排引擎,支持自动化部署、大规模可伸缩、应用容器化管理。
K8S用来做什么?
说白了就是管理docker容器的,通过yaml文件生成容器 不需要手动去构建,可以生成多个容器,在一个容器挂掉的情况下,自动生成新的容器,配合jenkin做一个持续集成(CI),管理容器 jenkins相关内容:Jenkins+Gitlab+docker部署全流程 基于Centos7
流程如下:
一、K8S的搭建
- 可以参考以下文章:kubeadm部署最新版k8s集群v1.18.0
- 如果要搭建集群的话一定要记下来生成的token,后面node节点加入master要用到,用法如下图,在node节点的机器上输入红线所指的命令
-
如果token和sha256没有记住可以通过如下命令来查看,或者参考这篇文章:忘记K8S生成token的解决方案
-
kubeadm token list
-
也可以通过如下命令来生成一个永久的token :
kubeadm token create --ttl 0
-
光有token还是不够的还需要借助一个sha256,通过如下命令来查看sha 256:
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
- 如果是公网会有网络的坑,参考如下文章:阿里云搭建K8S初始化的坑
- 记好之后如上面面第一张图所示
- TIPS:一定要注意看上面文章的网络部分,网络配置不好后面的步骤就很难执行了,算是有一点小坑
二、K8S的YAML文件编写(重点 有坑)
- 上图横线下面的apiVersion要注意,在kubernetes1.9版本中,引入apps/v1,deployment等资源从extensions/v1beta1, apps/v1beta1 和 apps/v1beta2迁入apps/v1,原来的v1beta1等被废弃 ,参考链接:no matches for kind in version "extensions/v1beta1解决
- coreDns也有坑:点击查看解决方案
- K8S可视化Dashboard安装教程:点击查看教程
- 解决可视化界面搭建好后的匿名登陆问题,可以参考下面的命令: 点击查看参考文章
kubectl create clusterrolebinding test:anonymous --clusterrole=cluster-admin --user=system:anonymous
三、 网络踩坑!!
1、修改hosts配置域名解析
vi /etc/hosts
修改完etc之后单独重启命令
/etc/init.d/network restart
2、修改 /etc/resolv.conf文件
vi /etc/resolv.conf
修改完之后重启网络命令
service network restart
四、jenkins的脚本
#!/bin/sh
#!/bin/sh
# 你的jar包名字
jarName=aigateClient-1.0.0-exec.jar
# 对应k8s的app name ,同时也作为镜像名,因为打镜像的时候是不能有大写的
projectName=aigateclient
# 复制的路径
moveSpace=aigateClient
#jenkins的工作空间
docker_path=${WORKSPACE}
echo "工作空间:"${WORKSPACE}
cp ${WORKSPACE}/${moveSpace}/target/${jarName} ${docker_path}
echo "复制地址为:"${WORKSPACE}/${moveSpace}/target/${jarName} ${docker_path}
#执行脚本
sh /root/docker_dir/deploy_docker.sh ${projectName} ${docker_path} ${jarName}
- 这一步脚本构建镜像,和删除老的镜像,一定要注意脚本的编写,不要出现名字写错。。防止运行不了
#!bin/sh
# maven01 $workspace $jarname
# ${projectName} ${docker_path} ${jarName}
set -e
projectName=$1
docker_path=$2
appName=$3
#user_name=
#password=
tag=$(date +%s)
sever_path=192.168.209.4:5000
target_image=${projectName}:${tag}
#${BUILD_NUMBER}
echo "镜像名 ${target_image}"
cd ${docker_path}
echo "路径为:${docker_path}"
echo "${appName}"
docker build --build-arg app=${appName} -t ${target_image} .
echo "构建成功:${target_image} ${sever_path}/${projectName}"
docker tag ${target_image} ${sever_path}/${projectName}
echo "推送是 docker push ${server_path}/${projectName}:latest"
docker push ${sever_path}/${projectName}:latest
docker image rm `docker images -q --filter reference=${projectName}`
- 执行编写好的kube.yaml,由k8s执行部署,下面的脚本需要设置jenkins服务器到k8s-master服务器的免密登陆
- 生成sshKey的命令
cd ~/.ssh
ssh-keygen -t rsa -C xxx@txxx.cn
- 把生成的sshkey拷贝到master节点,这步做完就可以实现master节点的免密登陆
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.209.4
set -e
echo ${WORKSPACE}
# 把kube.yaml移动到宿主机的root目录下
scp ${WORKSPACE}/*.yaml 192.168.209.3:/root/
# 执行脚本
ssh 192.168.209.3 '/usr/bin/kubectl apply -f /root/kube.yaml'
K8S一些基础命令
- 查看pod运行在什么节点上:
kubectl get pods -o wide
- 查看全部pod所在的节点:
kubectl get pods -o wide --all-namespaces
- 根据podName查找:
kubectl get po --all-namespaces | grep maven
- 查看日志:
kubectl logs -f podName
- 查看某个命名空间下的pod锁在节点:
kubectl get pods -n kube-system -o wide
- 查看有问题的pod详情:
kubectl describe pods podName -n kube-system
- 查看具体的某一个命名空间下的详情和端口:
kubectl get pods,svc -n kubernetes-dashboard -o wide
- 删除指定的pod:
kubectl delete pod podName -n kube-system
- 查看具体的pod 500行日志:
kubectl logs -f --tail 500 etcd-izuf64dhkm7uc5t46cuojkz -n kube-system` (-n 是指name space,如果不加这个默认在default下面寻找)
- 查看某个命名空间下pod运行节点命令
kubectl get pods -o wide -n kube-system
- 删除某个用yaml启动的pod
kubectl delete -f centos_deployment.yaml
- 用yaml启动pod
kubectl create -f centos_deployment.yaml
更多推荐
已为社区贡献1条内容
所有评论(0)