美文网首页
k8s(three)

k8s(three)

作者: Freestyle_0f85 | 来源:发表于2020-01-15 12:20 被阅读0次

参考博客

1.k8s的附加组件

1.1dns服务
作用:把svc的名字解析成VIP的地址

#1:下载dns_docker镜像包
wget http://192.168.12.202/docker_image/docker_k8s_dns.tar.gz

#2:导入dns_docker镜像包(node1节点)

#3:修改skydns-deploy.yaml,  在node1 创建dns服务
spec:
  nodeSelector:
    kubernetes.io/hostname: 10.0.0.12
  containers:   

#4:创建dns服务
kubectl  create  -f   skydns-deploy.yaml
kubectl create -f skydns-svc.yaml

#5:检查
kubectl get all --namespace=kube-system

#6:修改所有node节点kubelet的配置文件
vim  /etc/kubernetes/kubelet
KUBELET_ARGS="--cluster_dns=10.254.230.254 --cluster_domain=cluster.local"
​
systemctl   restart kubelet

1.2namespace命令空间
namespace做资源隔离

[root@k8s-master wordpress_demo]# kubectl  get namespace 
NAME          STATUS    AGE
default       Active    5d
kube-system   Active    5d

#增
kubectl create namespace lcx

#删
kubectl delete namespace lcx
资源之间相互隔离,互不影响

1.3健康检查
1.3.1探针的种类
livenessProbe:健康状态检查,周期性检查服务是否存活,检查结果失败,将重启容器

readinessProbe:可用性检查,周期性检查服务是否可用,不可用将从service的endpoints中移除

1.3.2探针的检测方法
exec:执行一段命令
httpGet:检测某个 http 请求的返回状态码
tcpSocket:测试某个端口是否能够连接

1.3.3liveness探针的exec的使用

vi  nginx_pod_exec.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: exec
spec:
  containers:
    - name: nginx
      image: 10.0.0.11:5000/nginx:1.13
      ports:
        - containerPort: 80
      args:
        - /bin/sh
        - -c
        - touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600
      livenessProbe:
        exec:
          command:
            - cat
            - /tmp/healthy
        initialDelaySeconds: 5   
        periodSeconds: 5

1.3.4liveness探针的httpGet使用

vi   nginx_pod_httpGet.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: httpget
spec:
  containers:
    - name: nginx
      image: 10.0.0.11:5000/nginx:1.13
      ports:
        - containerPort: 80
      livenessProbe:
        httpGet:
          path: /index.html
          port: 80
        initialDelaySeconds: 3
        periodSeconds: 3

1.3.5 liveness探针的tcpSocket使用

vi   nginx_pod_tcpSocket.yaml
apiVersion: v1
kind: Pod
metadata:
  name: tcpSocket
spec:
  containers:
    - name: nginx
      image: 10.0.0.11:5000/nginx:1.13
      ports:
        - containerPort: 80
      livenessProbe:
        tcpSocket:
          port: 80
        initialDelaySeconds: 3
        periodSeconds: 3

1.3.6readiness探针的httpGet使用

vi   nginx-rc-httpGet.yaml
apiVersion: v1
kind: ReplicationController
metadata:
  name: readiness
spec:
  replicas: 2
  selector:
    app: readiness
  template:
    metadata:
      labels:
        app: readiness
    spec:
      containers:
      - name: readiness
        image: 10.0.0.11:5000/nginx:1.13
        ports:
        - containerPort: 80
        readinessProbe:
          httpGet:
            path: /qiangge.html
            port: 80
          initialDelaySeconds: 3
          periodSeconds: 3

1.4dashboard服务
1:上传并导入镜像,打标签

2:创建dashborad的deployment和service

3:访问http://10.0.0.11:8080/ui/

1.5通过apiservicer反向代理访问service

第一种:NodePort类型 
通过两个从节点访问
type: NodePort
  ports:
    - port: 80
      targetPort: 80
      nodePort: 30008
​
第二种:ClusterIP类型
系统默认种类,通过主节点访问
 type: ClusterIP
  ports:
    - port: 80
      targetPort: 80
      
http://10.0.0.11:8080/api/v1/proxy/namespaces/命令空间/services/service的名字/
​
http://10.0.0.11:8080/api/v1/proxy/namespaces/qiangge/services/wordpress

2. k8s弹性伸缩

k8s弹性伸缩,需要附加插件heapster监控
1.上传并导入镜像,打标签

for n in `ls *.tar.gz`;do docker load -i $n ;done
docker tag docker.io/kubernetes/heapster_grafana:v2.6.0 10.0.0.11:5000/heapster_grafana:v2.6.0
docker tag  docker.io/kubernetes/heapster_influxdb:v0.5 10.0.0.11:5000/heapster_influxdb:v0.5
docker tag docker.io/kubernetes/heapster:canary 10.0.0.11:5000/heapster:canary

2.上传配置文件,kubectl create -f .

修改配置文件:
#heapster-controller.yaml
    spec:
      nodeName: 10.0.0.13 #指定节点
      containers:
      - name: heapster
        image: 10.0.0.11:5000/heapster:canary
        imagePullPolicy: IfNotPresent
#influxdb-grafana-controller.yaml
    spec:
      nodeName: 10.0.0.13
      containers:

3.打开dashboard验证


image.png

2.2弹性伸缩
1.修改rc的配置文件

找一个yaml文件加上限制,创建容器
  containers:
  - name: myweb
    image: 10.0.0.11:5000/nginx:1.13
    ports:
    - containerPort: 80
    resources:
      limits:
        cpu: 100m
      requests:
        cpu: 100m

2.创建弹性伸缩规则

kubectl autoscale deploy nginx-deployment --max=8 --min=1 --cpu-percent=10
                                指定名字 

3.3:测试

ab -n 1000000 -c 40 ip地址

扩容截图


image.png

收缩截图


image.png

3.持久化存储

数据持久化类型
3.1emptydir

image.png
3.2hostpath
    spec:
      nodeName: 10.0.0.13
      volumes:
      - name: mysql
        hostPath:
          path: /data/wp_mysql
      containers:
        - name: wp-mysql
          image: 10.0.0.11:5000/mysql:5.7
          imagePullPolicy: IfNotPresent
          ports:
          - containerPort: 3306
          volumeMounts:
          - mountPath: /var/lib/mysql
            name: mysql

3.3nfs

      volumes:
      - name: mysql
        nfs:
          path: /data/wp_mysql
          server: 10.0.0.11

3.4pvc
pv: persistent volume 全局资源,k8s集群

pvc: persistent volume claim, 局部资源属于某一个namespace
1.安装nfs服务端(10.0.0.11)

yum install nfs-utils.x86_64 -y
mkdir /data
vim /etc/exports
/data  10.0.0.0/24(rw,async,no_root_squash,no_all_squash)
systemctl start rpcbind
systemctl start nfs

2.在node节点安装nfs客户端

yum install nfs-utils.x86_64 -y
showmount -e 10.0.0.11

3.创建pv和pvc
上传yaml配置文件,创建pv和pvc
4.创建mysql-rc,pod模板里使用volume

      volumes:
      - name: mysql
        persistentVolumeClaim:
          claimName: tomcat-mysql
image.png
查看pv
[root@k8s-master tomcat_demo]# kubectl get pv
NAME           CAPACITY   ACCESSMODES   RECLAIMPOLICY   STATUS    CLAIM                  REASON    AGE
tomcat-mysql   10Gi       RWX           Recycle         Bound     default/tomcat-mysql             6m

3.5分布式存储glusterfs
a: 什么是glusterfs

Glusterfs是一个开源分布式文件系统,具有强大的横向扩展能力,可支持数PB存储容量和数千客户端,通过网络互联成一个并行的网络文件系统。具有可扩展性、高性能、高可用性等特点。

b: 安装glusterfs

所有节点:
yum install  centos-release-gluster -y
yum install  install glusterfs-server -y
systemctl start glusterd.service
systemctl enable glusterd.service
mkdir -p /gfs/test1
mkdir -p /gfs/test2

c: 添加存储资源池

master节点:
gluster pool list
gluster peer probe k8s-node1
gluster peer probe k8s-node2
gluster pool list

d: glusterfs卷管理

创建分布式复制卷
gluster volume create qiangge replica 2 k8s-master:/gfs/test1 k8s-master:/gfs/test2 k8s-node-1:/gfs/test1 k8s-node-1:/gfs/test2 force
启动卷
gluster volume start qiangge
查看卷
gluster volume info qiangge 
挂载卷
mount -t glusterfs 10.0.0.11:/qiangge /mnt

e:分布式复制卷讲解



f: 分布式复制卷扩容

扩容前查看容量:
df   -h
​
扩容命令:
gluster volume add-brick qiangge k8s-node-2:/gfs/test1 k8s-node-2:/gfs/test2 force
​
扩容后查看容量:
df   -h

相关文章

网友评论

      本文标题:k8s(three)

      本文链接:https://www.haomeiwen.com/subject/eyzzactx.html