minikube的安装部署使用(service expose端口暴露后访问受限问题)

minikube的安装部署

环境(centos7 ip->192.168.44.133)

1.安装docker
docker安装
2.配置docker使用systemd作为默认cgroup驱动,使docker与kubenetes的驱动一致,否则会报错
处理错误参考链接
cat << EOF >> /etc/docker/daemon.json
{
“exec-opts”:[“native.cgroupdriver=systemd”]
# “exec-opts”:[“native.cgroupdriver=cgroupfs”]
}
报错信息

3.启动docker

systemctl start docker
systemctl enable docker 

4.设置阿里的kubeadm源
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes Repo
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
enable=1
EOF

5.安装kubeadm等
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes

6.下载minikube的软件包
curl -Lo minikube http://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/v1.2.0/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/

7.关闭交换分区
swapoff -a
8.启动minikube( minikube delete删除minikube结点)
minikube start --vm-driver=“none”

启动成功
deploy用来部署容器的工具

kubectl create deployment nginx-deploy --image=nginx -r 3

deployment名称为 nginx-deploy
使用的镜像为:nginx
-r 启动容器的副本数

  • kubectl常用命令
#创建部署
kubectl create deployment nginx-deploy
# 获取pod或结点信息
kubectl get pod/node
# 获取详细信息
kubectl describle ...
#获取日志信息
kubectl logs
# 查看集群信息
kubectl cluster-info
#进入容器内部
kubectl exec -it [pod_name] -- [command]
# 删除部署
kubectl  delete deployment nginx-deploy

service暴露

常见的三种暴露模式
ClusterIp
NodePort
LoadBalancer

创建deployment

kubectl create deployment my-nginx --image=nginx --replicas=2
[root@minikube]# kubectl get deployment
NAME       READY   UP-TO-DATE   AVAILABLE   AGE
my-nginx   2/2     2            2           72s

创建服务并暴露端口

kubectl expose deployment my-nginx --port=8080 --target-port=80 --type="NodePort"
[root@minikube]# kubectl get service
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP          5h47m
my-nginx     NodePort    10.106.249.64   <none>        8080:32463/TCP   9s

查看服务详细信息

kubectl describe service my-nginx
Name:                     my-nginx
Namespace:                default
Labels:                   app=my-nginx
Annotations:              <none>
Selector:                 app=my-nginx
Type:                     NodePort
IP Families:              <none>
IP:                       10.106.249.64
IPs:                      <none>
Port:                     <unset>  8080/TCP
TargetPort:               80/TCP
NodePort:                 <unset>  32463/TCP
Endpoints:                172.17.0.4:80,172.17.0.5:80
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

访问宿主机ip+NodePort无法访问,本机访问正常
本机访问正常

估计是iptables规则导致访问受限
查看iptables规则
问题描述

问题解决

iptables -P FORWARD ACCEPT

访问正常
疑点:为什么网页数据会经过forward数据转发链,猜测可能与k8s的kube-proxy代理有关

kube-proxy的三种模式

iptables模式(1.2版本后)
ipvs模式(1.8版本后)
userspace模式

动态扩缩容:

kubectl scale deployment my-nginx --replicas=3
#查看pod的详细信息
kubectl get pod -o wide

滚动升级

# 创建低版本nginx容器pod
kubectl create deployment my-nginx-1.18 --image=nginx:1.18.0 -r 2
# 滚动升级
kubectl set image deployment my-nginx-1.18 nginx=nginx:1.19.7
# 查看镜像版本
kubectl describe pod my-nginx-1.18
# 查看滚动升级是否成功
kubectl rollout status deployment my-nginx-1.18
---------------------------------------------
>deployment "my-nginx-1.18" successfully rolled out
------------------------------------------------
#升级不存在的版本会出错
# 回滚,撤销版本升级
kubectl rollout undo deployment my-nginx-1.18
#查看版本信息
kubectl describe pod my-nginx-1.18

k8s中的namespace
为了防止错误的操作同名服务,可以将不同服务的pod放置到不同的命名空间。

# 查看pod所属命名空间
kubectl get pod -A
# 查看所有命名空间
kubectl get namespace

configmap
相当于一个容器文件,共享数据到pod中的容器内,公共的数据中心

secret
存放加密信息(密码,密钥,auth认证信息)

pv与pvc:
pv:实际划分的存储空间
pvc:相当于取货单,去pv上申请空间分配
资源部署通过yaml文件

kubectl apply -f  ...yaml

搭建k8s集群完整篇

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值