网站首页 > 技术文章 正文
今天来记录下K8s部署,由于咱们这是测试环境,所以只部署一台master和一台node,后续我会记录多master高可用部署,使用kubeadm部署k8s 1.9.0。
一、安装之前准备工作
1、设置主机名,分别为master,node
hostnamectl set-hostname ${hostname}
2、禁用自带的firewall
systemctl stop firewalld && systemctl disable firewalld
3、关selinux
sed -i -re '/^\s*SELINUX=/s/^/#/' -e '$i\\SELINUX=disabled' /etc/selinux/config
4、开启IP和iptables的bridge的转发功能
echo "
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
" >> /etc/sysctl.conf
sysctl -p
5、若之前安装过,可以清理一下(正常安装请忽略)
kubeadm reset
二、安装所需要软件包
1、安装docker
yum install docker -y
2、安装k8s软件包,因为被deny网络原因,可以下载离线包,私信k8s即可获取。
socat-1.7.3.2-2.el7.x86_64.rpm
kubectl-1.9.0-0.x86_64.rpm kubeadm-1.9.0-0.x86_64.rpm
kubelet-1.9.0-0.x86_64.rpm kubernetes-cni-0.6.0-0.x86_64.rpm
3、设为自启动,并启动docker,kubelet服务
4、因为deny国外一些网络的原因以下tar是离线下载的,私信k8s即可获取。
导入到docker中
for x in `ls *.tar`;do docker load <$x;done
三、master上配置
1、以下操作在master上进行初始化,初始化完毕后生成一串token,务必记下,这是node加入master使用的。
kubeadm init --kubernetes-version=v1.9.0 --token-ttl 0 --pod-network-cidr=10.244.0.0/16
--kubernetes-version=v1.8.4 :不指定会去google获取版本信息,所以你懂的~~~
--token-ttl 0 :token永不过期,不指定默认24h后过期
--pod-network-cidr=10.244.0.0/16 :如果要正常使用Flannel,则确保使用此配置
完成后按提示设置变量如下
vi ~/.bashrc
export KUBECONFIG=/etc/kubernetes/admin.conf
source ~/.bashrc
编辑配置文件 /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
新增:
Environment="KUBELET_MY_ARGS=--runtime-cgroups=/systemd/system.slice --kubelet-cgroups=/systemd/system.slice"
修改ExecStart: 在末尾新增 $KUBELET_MY_ARGS
systemctl daemon-reload &&systemctl restart kubelet
3、安装网络flannel
https://raw.githubusercontent.com/coreos/flannel/v0.9.1/Documentation/kube-flannel.yml
kubectl apply -f kube-flannel.yml
4、设置所有master参见调度
kubectl taint nodes --all node-role.kubernetes.io/master-
5、安装监控
5.1、安装仪表板
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.8.1/src/deploy/recommended/kubernetes-dashboard.yaml
cat <<EOF > ./kubernetes-dashboard-admin.yaml
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: kubernetes-dashboard
labels:
k8s-app: kubernetes-dashboard
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: kubernetes-dashboard
namespace: kube-system
EOF
kubectl create -f kubernetes-dashboard-admin.yaml
5.2、安装负责收集pod各项指标, 比如cpu, 内存, 网络等
kubectl create -f heapster-rbac.yaml
kubectl create -f heapster.yaml
安装这个是存储pod信息相关的数据库, heapster获取数据之后, 可以指定存储在InfluxDB
kubectl create -f influxdb.yaml
这个主要是用于显示InfluxDB里面的数据情况, 可以让我们很直观看到数据变化
kubectl create -f grafana.yaml
默认情况下, grafana是不需要密码的,
wget https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/influxdb/grafana.yaml
wget https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/rbac/heapster-rbac.yaml
wget https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/influxdb/heapster.yaml
wget https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/influxdb/influxdb.yaml
5.3、启动UI和监控面板
kubectl proxy --address=0.0.0.0 -p 8001 --accept-hosts='^.*' &
获取kubernetes-dashboard用户的token
kubectl -n kube-system describe secret kubernetes-dashboard-token
用IP 127.0.0.1/ui 和获取的token即可进入UI管理面板。
仪表板页面访问:masterIP或nodeIP:8001
监控页面访问:masterIP或nodeIP:32667这是使用的nodeport
四、node配置
在master上执行 kubeadm token create --print-join-command,获取认证内容,并在每台node上运行,即可受权。或者直接将master初始化生成的token执行即可。
kubeadm join --token xxxxxxxx 192.168.x.x:6443 --discovery-token-ca-cert-hash xxxxxxxxx
kubectl get node 查看集群状态
五、测试部署应用
新建一台tomcat的pod副本为2,以下为yaml配置文件。tomcat-rc.yaml tomcat-service.yaml,我使用nodeport直接暴露pod的端口,后续使用traefik代理进行访问。
kubectl create -f tomcat-rc.yaml -f tomcat-service.yaml
cat tomcat-rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: tomcat
labels:
app: tomcat
spec:
replicas: 2
template:
metadata:
labels:
app: tomcat
spec:
containers:
- name: tomcat
image: docker.io/tomcat
ports:
- containerPort: 8080
cat tomcat-service.yaml
apiVersion: v1
kind: Service
metadata:
name: tomcat
spec:
type: NodePort
ports:
- port: 8080
nodePort: 30001
selector:
app: tomcat
查看pod运行状态
kubectl get pods -o wide
kubectl get svc -o wide
因为上边使用nodeport方式来访问tomcat的我们来测试下。
访问master:30001
访问node:30001
访问正常,搭建完毕。如果需要离线包私信索取即可。
猜你喜欢
- 2024-10-10 K8S集群metrics-server组件安装 k8s集群包含哪些组件
- 2024-10-10 第6课 Kubernetes之深入掌握Pod机制及应用
- 2024-10-10 万字长文 | 使用 RBAC 限制对 Kubernetes 资源的访问
- 2024-10-10 Kubernetes:监控指南 kubernetes 监控
- 2024-10-10 《蹲坑学K8S》之21-1:Metrics-Server监控
- 2024-10-10 K8S架构设计及工作流程分析 k8s 结构图
- 2024-10-10 Metrics Server 快速安装 melsoft安装教程
- 2024-10-10 K8S系统的监控及HPA控制器 k8s dashboard 监控
- 2024-10-10 如何通过在多个Vagrant管理的虚拟机上部署多节点Kubernetes集群
- 2024-10-10 Kubernetes集群的自动水平伸缩 kubernetes 自动伸缩
你 发表评论:
欢迎- 最近发表
-
- 在 Spring Boot 项目中使用 activiti
- 开箱即用-activiti流程引擎(active 流程引擎)
- 在springBoot项目中整合使用activiti
- activiti中的网关是干什么的?(activiti包含网关)
- SpringBoot集成工作流Activiti(完整源码和配套文档)
- Activiti工作流介绍及使用(activiti工作流会签)
- SpringBoot集成工作流Activiti(实际项目演示)
- activiti工作流引擎(activiti工作流引擎怎么用)
- 工作流Activiti初体验及在数据库中生成的表
- Activiti工作流浅析(activiti6.0工作流引擎深度解析)
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)