云原生学习

https://www.yuque.com/leifengyang/oncloud

https://www.bilibili.com/video/BV13Q4y1C7hS/?p=2&spm_id_from=pageDriver&vd_source=a152087dca674715707126502292f55b

一、云平台

1.1、为什么采用云平台 

环境统一

按需付费

即开即用

稳定性强

1.2  公有云

资源通过 Internet 提供;

成本更低:无需购买硬件或软件,仅对使用的服务付费。
无需维护:维护由服务提供商提供。
近乎无限制的缩放性:提供按需资源,可满足业务需求。
高可靠性:具备众多服务器,确保免受故障影响。

1.3 私有云

  自己搭建云平台,或者购买;

灵活性更强:组织可自定义云环境以满足特定业务需求。

控制力更强:资源不与其他组织共享,因此能获得更高的控制力以及更高的隐私级别。

可伸缩性更强:与本地基础结构相比,私有云通常具有更强的可伸缩性。

二、DOCKER

2.1解决的问题

1、统一标准

2、基础镜像MB级别

3、创建简单

4、隔离性强

5、启动速度秒级

6、移植与分享方便

 2.2 架构

 

 2.3 Docker安装

https://www.cnblogs.com/mancheng/articles/16032300.html

2.4 docker使用

下载镜像:

[root@localhost ~]# docker pull nginx

查看镜像:

[root@localhost ~]# docker images

启动镜像:

[root@localhost ~]# docker run -d --name nginx21 -p 10080:80 nginx

查看启动的容器:

[root@localhost ~]# docker ps

删除容器:

[root@localhost ~]# docker rm 8e3dc68a8053

容器更新配置:

[root@localhost ~]# docker update 2953cb75239b  --restart=always

进入容器内部:

[root@localhost ~]# docker exec -it 295 /bin/bash

 当前容器修改后,利用当前的容器,重新构建镜像:

[root@localhost ~]# docker commit -a="zuozhe" -m="add message" 2953cb75239b  nginx:v2

将镜像保存为压缩包:

[root@localhost ~]# docker save -o nginx.tar nginx

加载镜像:

[root@localhost ~]# docker load -i nginx.tar

 磁盘挂载

oot@localhost ~]# docker run -d --name=nginx23 -p 10081:80 -v /root/ngin:/usr/share/nginx/html nginx

将容器中的文件拷贝出来:

[root@localhost ~]# docker cp 295:/etc/nginx/nginx.conf /root/ngin/

将宿主机的文件拷贝到容器

[root@localhost ngin]# docker cp /root/ngin/nginx.conf 295:/etc/nginx/nginx.conf

将容器中的文件挂载出来,首先要在宿主机目录建好文件

[root@localhost ngin]# docker run -d -p 10082:80 --name=nginx24 -v /root/ngin:/usr/share/nginx/html -v /root/nginx.conf:/etc/nginx/nginx.conf nginx 

编写dockerfile

vi   dockerfile

FROM tomcat:8

RUN mkdir -p /usr/local/tomcat/webapps/ROOT/

RUN echo 'hello docker'>/usr/local/tomcat/webapps/ROOT/index.html

RUN mkdir /usr/local/tomcat/webapps/

构建镜像:

oot@localhost dockerstu]# docker build -t tom .

 三、Kubernetes

 

 大规模的容器编排系统

3.1 kubernetes具有以下特性:

服务发现和负载均衡:

     Kubernetes可以使用DNS名称或自己的IP地址公开容器,如果进入容器的流量恒大,Kubernetes可以负载均并分配网络流量,从而使部署稳定。

 存储编排:

              Kubernetes允许你自动挂载你选择的存储系统,例如本地存储,公共云提供商等。

自动部署和回滚:

            你可以使用Kubernetes描述已部署容器的所需状态,它可以受控的速率将实际状态改为期望状态。例如,你可以自动湖Kubernetes来为你的部署创建新容器,删除现有容器并将他们的所有资源用于新容器,

 自动完成装箱计算

  • Kubernetes 允许你指定每个容器所需 CPU 和内存(RAM)。 当容器指定了资源请求时,Kubernetes 可以做出更好的决策来管理容器的资源。
  • 自我修复
    Kubernetes 重新启动失败的容器、替换容器、杀死不响应用户定义的 运行状况检查的容器,并且在准备好服务之前不将其通告给客户端。
  • 密钥与配置管理
    Kubernetes 允许你存储和管理敏感信息,例如密码、OAuth 令牌和 ssh 密钥。 你可以在不重建容器镜像的情况下部署和更新密钥和应用程序配置,也无需在堆栈配置中暴露密钥。

 Kubernetes 为你提供了一个可弹性运行分布式系统的框架。 Kubernetes 会满足你的扩展要求、故障转移、部署模式等。 例如,Kubernetes 可以轻松管理系统的 Canary 部署。

 3.2  架构

 1、工作方式

Kubernetes Cluster=N Master Node + N Worker Node:N主节点+N工作节点;N >=1

 3.3 搭建k8s集群

1,环境为一主二从  ,环境介绍

主节点:192.168.43.50    从一: 192.168.43.51  从二:192.168.43.52

操作系统: CentOS7.9

参考:https://www.cnblogs.com/mancheng/articles/16032300.html

2,首先安装docker环境(三台都安装):

添加资源信息:

yum install -y yum-utils
yum-config-manager     --add-repo     https://download.docker.com/linux/centos/docker-ce.repo

3,安装docker环境:

yum install -y  docker-ce docker-ce-cli containerd.io

4,安装成功以后:

[root@slave2 ~]# docker -v
Docker version 20.10.21, build baeda1f

5,启动docker

systemctl enable docker --now

6,配置镜像加速:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

 7,开始安装kubeadm

首先设置不同的主机名;

关闭selinux:

[root@master ~]# setenforce 0
setenforce: SELinux is disabled
[root@master ~]# vi /etc/selinux/config

 8,关闭swap分区:

[root@master ~]# swapoff -a
[root@master ~]# vi /etc/fstab
#/dev/mapper/centos-swap swap                    swap    defaults        0 0

 9,允许 iptables 检查桥接流量

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo sysctl --system

 10,安装kubctl、kublet、kubeadm

(三台执行)

cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
   http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
exclude=kubelet kubeadm kubectl
EOF
 yum install -y kubelet-1.20.9 kubeadm-1.20.9 kubectl-1.20.9 --disableexcludes=kubernetes

 11,启动kublet

[root@slave2 ~]# systemctl enable --now kubelet
Created symlink from /etc/systemd/system/multi-user.target.wants/kubelet.service to /usr/lib/systemd/system/kubelet.service.

 12,下载机器需要的镜像(三台执行):

sudo tee ./images.sh <<-'EOF'
#!/bin/bash
images=(
kube-apiserver:v1.20.9
kube-proxy:v1.20.9
kube-controller-manager:v1.20.9
kube-scheduler:v1.20.9
coredns:1.7.0
etcd:3.4.13-0
pause:3.2
)
for imageName in ${images[@]} ; do
docker pull registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/$imageName
done
EOF

 13,执行下载(三台):

chmod +x ./images.sh && ./images.sh

 14, 192.168.43.50为主节点的地址,在每个节点执行:

[root@master ~]# echo "192.168.43.50  cluster-endpoint" >> /etc/hosts
[root@slave1 ~]# echo "192.168.43.50  cluster-endpoint" >> /etc/hosts
[root@slave2 ~]# echo "192.168.43.50  cluster-endpoint" >> /etc/hosts

 15,每台测试无误:

[root@master ~]# ping cluster-endpoint
[root@slave1 ~]# ping cluster-endpoint
[root@slave2 ~]# ping cluster-endpoint

 16,初始化主节点(主节点执行) --apiserver-advertise-address=192.168.43.50(这个地址是主节点的地址)

kubeadm init \
--apiserver-advertise-address=192.168.43.50 \
--control-plane-endpoint=cluster-endpoint \
--image-repository registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images \
--kubernetes-version v1.20.9 \
--service-cidr=10.96.0.0/16 \
--pod-network-cidr=192.168.0.0/16

执行完成出现如下提示:

Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

You can now join any number of control-plane nodes by copying certificate authorities
and service account keys on each node and then running the following as root:

  kubeadm join cluster-endpoint:6443 --token ubnac3.be5tgxvansgmk7wo \
    --discovery-token-ca-cert-hash sha256:c3cf2c124967c4f412e85019ca69bfa28b74d7bbd06d702e353d99a6e9bcb799 \
    --control-plane 

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join cluster-endpoint:6443 --token ubnac3.be5tgxvansgmk7wo \
    --discovery-token-ca-cert-hash sha256:c3cf2c124967c4f412e85019ca69bfa28b74d7bbd06d702e353d99a6e9bcb799 

17,根据提示,在主节点执行:

[root@master ~]# mkdir -p $HOME/.kube
[root@master ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@master ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config

查看集群节点,没有发现其他节点原因是没有安装网络组件:

[root@master ~]# kubectl get nodes
NAME     STATUS     ROLES                  AGE   VERSION
master   NotReady   control-plane,master   20m   v1.20.9

18,安装网络组件(主节点):

[root@master ~]# curl https://docs.projectcalico.org/v3.18/manifests/calico.yaml -O

 部署网络插件calico

kubectl apply -f calico.yaml

(如果要删除,kubectl delete -f calico.yaml 删除)

查看节点状态:

[root@master ~]# kubectl get pod -A
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE
kube-system   calico-kube-controllers-577f77cb5c-xgxjp   1/1     Running   3          7m54s
kube-system   calico-node-s74w9                          1/1     Running   0          8m5s
kube-system   coredns-5897cd56c4-7r4pg                   1/1     Running   0          48m
kube-system   coredns-5897cd56c4-qzqlm                   1/1     Running   0          48m
kube-system   etcd-master                                1/1     Running   0          49m
kube-system   kube-apiserver-master                      1/1     Running   0          49m
kube-system   kube-controller-manager-master             1/1     Running   0          49m
kube-system   kube-proxy-48xvx                           1/1     Running   0          48m
kube-system   kube-scheduler-master                      1/1     Running   0          49m
[root@master ~]# kubectl get nodes
NAME     STATUS   ROLES                  AGE   VERSION
master   Ready    control-plane,master   65m   v1.20.9

 19,加入从节点,命令在16步执行结果中复制(两个从节点执行)

 kubeadm join cluster-endpoint:6443 --token ubnac3.be5tgxvansgmk7wo \
    --discovery-token-ca-cert-hash sha256:c3cf2c124967c4f412e85019ca69bfa28b74d7bbd06d702e353d99a6e9bcb799

 查看状态:

[root@master ~]# kubectl get pods -A
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE
kube-system   calico-kube-controllers-577f77cb5c-xgxjp   1/1     Running   3          53m
kube-system   calico-node-dbnz5                          1/1     Running   0          18m
kube-system   calico-node-rzbhm                          1/1     Running   0          12m
kube-system   calico-node-s74w9                          1/1     Running   0          53m
kube-system   coredns-5897cd56c4-7r4pg                   1/1     Running   0          94m
kube-system   coredns-5897cd56c4-qzqlm                   1/1     Running   0          94m
kube-system   etcd-master                                1/1     Running   0          94m
kube-system   kube-apiserver-master                      1/1     Running   0          94m
kube-system   kube-controller-manager-master             1/1     Running   0          94m
kube-system   kube-proxy-48xvx                           1/1     Running   0          94m
kube-system   kube-proxy-m9pnq                           1/1     Running   0          18m
kube-system   kube-proxy-zqb8w                           1/1     Running   0          12m
kube-system   kube-scheduler-master                      1/1     Running   0          94m

查看节点状态:

[root@master ~]# kubectl get nodes
NAME     STATUS   ROLES                  AGE   VERSION
master   Ready    control-plane,master   96m   v1.20.9
slave1   Ready    <none>                 19m   v1.20.9
slave2   Ready    <none>                 12m   v1.20.9

20、从节点加入的命令在16步生成,需要在24小时内执行,如果过了24小时,可以用如下命令:

[root@master ~]# kubeadm token create --print-join-command 
kubeadm join cluster-endpoint:6443 --token j72c05.unrlkq5ghu9hc3i6     --discovery-token-ca-cert-hash sha256:c3cf2c124967c4f412e85019ca69bfa28b74d7bbd06d702e353d99a6e9bcb799 

21,部署图形界面 dashboard  (没有成功)

[root@master ~]# wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.3.1/aio/deploy/recommended.yaml

启动pod:

[root@master ~]# kubectl apply -f recommended.yaml

查看:

[root@master ~]# kubectl get pod -A
NAMESPACE              NAME                                         READY   STATUS    RESTARTS   AGE
kube-system            calico-kube-controllers-577f77cb5c-xgxjp     1/1     Running   4          6h12m
kube-system            calico-node-dbnz5                            1/1     Running   0          5h37m
kube-system            calico-node-rzbhm                            1/1     Running   0          5h30m
kube-system            calico-node-s74w9                            1/1     Running   2          6h12m
kube-system            coredns-5897cd56c4-7r4pg                     1/1     Running   0          6h53m
kube-system            coredns-5897cd56c4-qzqlm                     1/1     Running   0          6h53m
kube-system            etcd-master                                  1/1     Running   0          6h53m
kube-system            kube-apiserver-master                        1/1     Running   0          6h53m
kube-system            kube-controller-manager-master               1/1     Running   2          6h53m
kube-system            kube-proxy-48xvx                             1/1     Running   0          6h53m
kube-system            kube-proxy-m9pnq                             1/1     Running   0          5h37m
kube-system            kube-proxy-zqb8w                             1/1     Running   0          5h30m
kube-system            kube-scheduler-master                        1/1     Running   2          6h53m
kubernetes-dashboard   dashboard-metrics-scraper-79c5968bdc-lllw9   1/1     Running   0          3m5s
kubernetes-dashboard   kubernetes-dashboard-658485d5c7-7994n        1/1     Running   2          2m24s

 3.4 核心概念

1、Namespace 名称空间

名称空间用来隔离资源,对集群资源进行隔离划分,默认只隔离资源,不隔离网络;

[root@master ~]# kubectl get namespace
NAME              STATUS   AGE
default           Active   4h33m
kube-node-lease   Active   4h33m
kube-public       Active   4h33m
kube-system       Active   4h33m

创建名称空间:

[root@master ~]# kubectl create namespace hello
namespace/hello created
[root@master ~]# kubectl get namespace
NAME              STATUS   AGE
default           Active   5h2m
hello             Active   15s
kube-node-lease   Active   5h2m
kube-public       Active   5h2m
kube-system       Active   5h2m

删除名称空间:

[root@master ~]# kubectl delete namespace hello
namespace "hello" deleted

通过yaml创建ns:

[root@master ~]# vi hello.yaml

apiVersion: v1
kind: Namespace
metadata:
   name: hello

启动:

[root@master ~]# kubectl apply -f hello.yaml 
namespace/hello created

通过配置文件删除,配置文件创建的namespace:

[root@master ~]# kubectl delete -f hello.yaml
namespace "hello" deleted

2、pod

运行中的一组容器,pod是k8s中的最小单位;

创建pod

[root@master ~]# kubectl run mynginx --image=nginx
pod/mynginx created

 查看创建的pod

[root@master ~]# kubectl get pod -n default
NAME      READY   STATUS    RESTARTS   AGE
mynginx   1/1     Running   0          3h57m

查看pod的详细描述:

[root@master ~]# kubectl describe pod mynginx
Name:         mynginx
Namespace:    default
Priority:     0
Node:         slave1/192.168.43.51
Start Time:   Sun, 27 Nov 2022 21:53:34 -0500
Labels:       run=mynginx

删除pod

[root@master ~]# kubectl delete pod mynginx -n default
pod "mynginx" deleted

通过yaml方式创建pod:

vi   nginx.yaml

apiVersion: v1
kind: Pod
metadata:
 labels:
     run: mynginx
 name: mynginx
spec:
    containers:
    - image: nginx
    name: mynginx

 配置文件检查:

https://www.yamllint.com/

从yaml文件运行pod

[root@master ~]# kubectl apply -f nginx.yaml
pod/mynginx created

查看运行的pod

[root@master ~]# kubectl get pod
NAME      READY   STATUS    RESTARTS   AGE
mynginx   1/1     Running   0          6m13s

删除pod

[root@master ~]# kubectl delete -f nginx.yaml 
pod "mynginx" deleted

查看logs

[root@master ~]# kubectl logs mynginx
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2022/11/29 14:00:14 [notice] 1#1: using the "epoll" event method
2022/11/29 14:00:14 [notice] 1#1: nginx/1.21.5
2022/11/29 14:00:14 [notice] 1#1: built by gcc 10.2.1 20210110 (Debian 10.2.1-6) 
2022/11/29 14:00:14 [notice] 1#1: OS: Linux 3.10.0-1062.el7.x86_64
2022/11/29 14:00:14 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
2022/11/29 14:00:14 [notice] 1#1: start worker processes
2022/11/29 14:00:14 [notice] 1#1: start worker process 31
2022/11/29 14:00:14 [notice] 1#1: start worker process 32

打印更详细的信息:

[root@master ~]# kubectl get pod -owide
NAME      READY   STATUS    RESTARTS   AGE     IP                NODE     NOMINATED NODE   READINESS GATES
mynginx   1/1     Running   0          3m24s   192.168.140.196   slave1   <none>           <none>

进入容器内部:

[root@master ~]# kubectl exec -it mynginx -- /bin/bash
root@mynginx:/# 

3、一个pod内多个镜像:

apiVersion: v1
kind: Pod
metadata:
   labels:
      run: myapp
   name: myapp
spec:
   containers:
    - image: nginx
      name: nginx
    - image: tomcat:8.5.68
      name: tomcat

启动:

[root@master ~]# kubectl apply -f multip.yaml 
pod/myapp created

查看:

[root@master ~]# kubectl get pod
NAME      READY   STATUS    RESTARTS   AGE
myapp     2/2     Running   0          34m
mynginx   1/1     Running   1          19h

4、Develop

控制pod,使pod拥有多副本,自愈,扩容,缩容等能力;

[root@master ~]# kubectl create deployment mytomcat --image=tomcat:8.5.68
deployment.apps/mytomcat created

尝试删除pod,发现有起来一个新的:

[root@master ~]# kubectl delete pod mytomcat-6f5f895f4f-6ptk4 
pod "mytomcat-6f5f895f4f-6ptk4" deleted

[root@master ~]# kubectl get pod
NAME                        READY   STATUS    RESTARTS   AGE
mytomcat-6f5f895f4f-hpwsh   1/1     Running   0          56s

查看deployment:

[root@master ~]# kubectl get deployment
NAME       READY   UP-TO-DATE   AVAILABLE   AGE
mytomcat   1/1     1            1           15m

删除deployment:

[root@master ~]# kubectl delete deployment mytomcat
deployment.apps "mytomcat" deleted

创建多副本deployment:

[root@master ~]# kubectl create deployment mynginx --image=nginx --replicas=3
deployment.apps/mynginx created
[root@master ~]# kubectl get deployment
NAME      READY   UP-TO-DATE   AVAILABLE   AGE
mynginx   3/3     3            3           43s

deployment的扩容和缩容:

[root@master ~]# kubectl scale deploy/mynginx --replicas=5
deployment.apps/mynginx scaled

缩容:

[root@master ~]# kubectl scale deploy/mynginx --replicas=2
deployment.apps/mynginx scaled

通过修改yaml文件的方式修改副本数量:

[root@master ~]# kubectl edit deployment mynginx

修改replicas的数量。

 5、Devloyment滚动更新

版本更新:

首先查看目前运行的pod:

[root@master ~]# kubectl get pod
NAME                       READY   STATUS    RESTARTS   AGE
mynginx-5b686ccd46-9kp5n   1/1     Running   1          11h
mynginx-5b686ccd46-gxh6t   1/1     Running   1          12h
mynginx-5b686ccd46-r24rd   1/1     Running   1          11h
mynginx-5b686ccd46-srqnp   1/1     Running   1          11h

查看pod的镜像信息:

[root@master ~]# kubectl get deploy mynginx -oyaml

   containers:
      - image: nginx
        imagePullPolicy: Always
        name: nginx
        resources: {}

更新镜像:

[root@master ~]# kubectl set image deploy/mynginx nginx=nginx:1.16.1 --record
deployment.apps/mynginx image updated

 打印历史记录:

[root@master ~]# kubectl rollout history deployment/mynginx
deployment.apps/mynginx 
REVISION  CHANGE-CAUSE
1         <none>
2         kubectl set image deploy/mynginx nginx=nginx:1.16.2 --record=true
3         kubectl set image deploy/mynginx nginx=nginx:1.16.1 --record=true

回退到以前的记录:

[root@master ~]# kubectl rollout undo deployment/mynginx --to-revision=1
deployment.apps/mynginx rolled back

总结Deployment:

 

 6、Service

pod的服务发现和负载均衡。

创建service:

[root@master ~]# kubectl expose deploy mynginx --port=8000 --target-port=80
service/mynginx exposed

查看service:

[root@master ~]# kubectl get service
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP    6d22h
mynginx      ClusterIP   10.96.203.137   <none>        8000/TCP   68s

查看pod,并修改nginx主页:

[root@master ~]# kubectl get pod
NAME                       READY   STATUS    RESTARTS   AGE
mynginx-5b686ccd46-brm5k   1/1     Running   0          19m
mynginx-5b686ccd46-f7l27   1/1     Running   0          19m
mynginx-5b686ccd46-gthzw   1/1     Running   0          19m

[root@master ~]# kubectl exec -it mynginx-5b686ccd46-brm5k -- /bin/bash
root@mynginx-5b686ccd46-brm5k:/# cd /usr/share/nginx/
root@mynginx-5b686ccd46-brm5k:/usr/share/nginx/html# echo 111 > index.html

第二台:

[root@master ~]# kubectl exec -it mynginx-5b686ccd46-f7l27 -- /bin/bash

root@mynginx-5b686ccd46-f7l27:/usr/share/nginx/html# echo 222 > index.html

第三台:

[root@master ~]# kubectl exec -it mynginx-5b686ccd46-gthzw -- /bin/bash
root@mynginx-5b686ccd46-gthzw:/# cd /usr/share/nginx/html/
root@mynginx-5b686ccd46-gthzw:/usr/share/nginx/html# echo 333 > index.html

用service地址访问:

[root@master ~]# curl 10.96.139.137:8000
111
[root@master ~]# curl 10.96.139.137:8000
111
[root@master ~]# curl 10.96.139.137:8000
222
[root@master ~]# curl 10.96.139.137:8000
333
[root@master ~]# curl 10.96.139.137:8000
333

 service的另外一种方式:Nodepord方式,集群外也可以访问 

[root@master ~]# kubectl expose deploy mynginx --port=8000 --target-port=80 --type=NodePort
service/mynginx exposed
[root@master ~]# kubectl get service
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP          8d
mynginx      NodePort    10.96.232.188   <none>        8000:32501/TCP   7s

7、 Ingress

 Service的统一网关入口。

安装Ingress:

[root@master ~]# wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.47.0/deploy/static/provider/baremetal/deploy.yaml
[root@master ~]# mv deploy.yaml.1 ingress.yaml

[root@master ~]# kubectl apply -f ingress.yaml 
namespace/ingress-nginx created
serviceaccount/ingress-nginx created
configmap/ingress-nginx-controller created
clusterrole.rbac.authorization.k8s.io/ingress-nginx created
clusterrolebinding.rbac.authorization.k8s.io/ingress-nginx created
role.rbac.authorization.k8s.io/ingress-nginx created
rolebinding.rbac.authorization.k8s.io/ingress-nginx created
service/ingress-nginx-controller-admission created
service/ingress-nginx-controller created
deployment.apps/ingress-nginx-controller created
validatingwebhookconfiguration.admissionregistration.k8s.io/ingress-nginx-admission created
serviceaccount/ingress-nginx-admission created
clusterrole.rbac.authorization.k8s.io/ingress-nginx-admission created
clusterrolebinding.rbac.authorization.k8s.io/ingress-nginx-admission created
role.rbac.authorization.k8s.io/ingress-nginx-admission created
rolebinding.rbac.authorization.k8s.io/ingress-nginx-admission created
job.batch/ingress-nginx-admission-create created
job.batch/ingress-nginx-admission-patch created

这块没有安装成功。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2022-11-20 21:12  中仕  阅读(15)  评论(0编辑  收藏  举报