计算机系统应用教程网站

网站首页 > 技术文章 正文

Kubernets学习笔记:K8s部署 k8s1.19部署

btikc 2024-10-10 04:50:42 技术文章 5 ℃ 0 评论

今天来记录下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

访问正常,搭建完毕。如果需要离线包私信索取即可。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表