云原生学习
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 公有云
成本更低:无需购买硬件或软件,仅对使用的服务付费。
无需维护:维护由服务提供商提供。
近乎无限制的缩放性:提供按需资源,可满足业务需求。
高可靠性:具备众多服务器,确保免受故障影响。
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
这块没有安装成功。