栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Kubernets in docker - kind部署应用及端口映射访问

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Kubernets in docker - kind部署应用及端口映射访问

docker 安装

kubectl安装

加入k8s的仓库源

cat > /etc/yum.repos.d/k8s.repo << EOF
[kubernetes]
name=kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

查看可安装列表
这里坑到我了,sort排序是按版本号的数字每一位来排序。我安装了老版本的,导致后面安装了不可以用

yum list kubectl --showduplicates | sort -r

安装
yum install -y kubectl-1.9.8-0 (老版本)
改为
yum install -y kubectl-1.21.1

验证安装

[root@kind centos]# kubectl version
Client Version: version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.8", GitCommit:"c138b85178156011dc934c2c9f4837476876fb07", GitTreeState:"clean", BuildDate:"2018-05-21T19:01:12Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}
The connection to the server localhost:8080 was refused - did you specify the right host or port?

安装kind
On Linux:

curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.11.1/kind-linux-amd64
chmod +x ./kind
mv ./kind /some-dir-in-your-PATH/kind
COPY
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.11.1/kind-linux-amd64
chmod +x ./kind
mv ./kind /some-dir-in-your-PATH/kind
On macOS via Homebrew:

brew install kind
COPY
brew install kind
On macOS via MacPorts:

sudo port selfupdate && sudo port install kind
COPY
sudo port selfupdate && sudo port install kind
On macOS via Bash:

curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.11.1/kind-darwin-amd64
chmod +x ./kind
mv ./kind /some-dir-in-your-PATH/kind
COPY
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.11.1/kind-darwin-amd64
chmod +x ./kind
mv ./kind /some-dir-in-your-PATH/kind
多节点集群安装

默认安装的集群只部署了一个控制节点,如果需要部署多节点集群,我们可以通过配置文件的方式来创建多个容器。这样就可以达到模拟多个节点目的,并以这些节点来构建一个多节点的 Kubernetes 集群。

vi multinode.yaml

# 一共两个节点,一个主节点,2个从节点。
kind: Cluster   
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
- role: worker  

**因为kind是容器模拟真实集群中的node节点,所以需要进行端口映射,我将三个节点的30100端口和80端口分别映射到宿主机的六个不同端口,这里官方建议是listenAddress写为0.0.0.0,127.0.0.1可能会影响主机的端口开放。查了一下,

在路由中,0.0.0.0表示的是默认路由,即当路由表中没有找到完全匹配的路由的时候所对应的路由。

另外 开放端口也有限制,主机端口应该是0-65535 而container端口开放好像是30000-32767

The Service “nginx-service” is invalid: spec.ports[0].nodePort: Invalid value: 40100: provided port is not in the valid range. The range of valid ports is 30000-32767

# 一共两个节点,一个主节点,2个从节点。默认TCP,可以配置为udp
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
  extraPortMappings:
  - containerPort: 80
    hostPort: 31180
    listenAddress: "0.0.0.0"
  - containerPort: 30100
    hostPort: 41100
    listenAddress: "0.0.0.0"
- role: worker
  extraPortMappings:
  - containerPort: 80
    hostPort: 31280
    listenAddress: "0.0.0.0"
  - containerPort: 30100
    hostPort: 42100
    listenAddress: "0.0.0.0"
- role: worker
  extraPortMappings:
  - containerPort: 80
    hostPort: 31380
    listenAddress: "0.0.0.0"
  - containerPort: 30100
    hostPort: 43100
    listenAddress: "0.0.0.0"

–name指定集群名

kind create cluster --config multinode.yaml  --name kind

查看刚刚创建的集群

kubectl get nodes

查看所有集群

kind get clusters

kubectl对指定集群进行操作(并不是切换集群)
后面加上–context参数 如果不带则默认为最新创建的集群

kubectl cluster-info --context kind-mykind
kubectl cluster-info --context kind-mykind-2

删除集群

kind delete cluster --name mykind-2
部署应用

以nginx为例

nginx.yml

selector的labels要与template中的保持一致

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deploy
spec:
  selector:
    matchLabels:
      lb: ng
  replicas: 3
  template:
    metadata:
      labels:
        lb: ng #pod的label
    spec:
      containers:
      - name: nginxweb
        image: nginx
        ports:
        - containerPort: 80
~                                     
root@kind centos]# kubectl create -f nginx.yml

副本手动扩缩容

kubectl scale --replicas=4 deploy nginx-deploy

为这些pod暴露一个Service
service.yml

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    lb: ng
  type: NodePort
  ports:
    - protocol: TCP
      port: 10008 #pod端口,可在pod中通过k8s的clusterip访问
      targetPort: 80 #容器端口
      nodePort: 30100 #node端口
[root@kind centos]# kubectl create -f service.yml 

查看

[root@kind centos]# kubectl get all
NAME                               READY   STATUS    RESTARTS   AGE
pod/nginx-deploy-d5d4787f7-9646b   1/1     Running   0          40m
pod/nginx-deploy-d5d4787f7-lvrrq   1/1     Running   0          40m
pod/nginx-deploy-d5d4787f7-m2nqq   1/1     Running   0          40m
pod/nginx-deploy-d5d4787f7-x9kxw   1/1     Running   0          4m4s

NAME                    TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)           AGE
service/kubernetes      ClusterIP   10.96.0.1               443/TCP           50m
service/nginx-service   NodePort    10.96.208.122           10008:30100/TCP   39m

NAME                           READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/nginx-deploy   4/4     4            4           40m

NAME                                     DESIRED   CURRENT   READY   AGE
replicaset.apps/nginx-deploy-d5d4787f7   4         4         4       40m

访问页面

[root@kind centos]# curl localhost:41100



Welcome to nginx!



Welcome to nginx!

If you see this page, the nginx web server is successfully installed and working. Further configuration is required.

For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.

Thank you for using nginx.

[root@kind centos]# curl localhost:41100 haha

curl localhost:41100
curl localhost:42100
curl localhost:43100
都可以

为了验证负载均衡,进入pod修改nginx页面 (本来想进入容器,kind部署应该看不到,直接进入pod)

[root@kind centos]# kubectl exec -it nginx-deploy-d5d4787f7-9646b  /bin/bash

将其中一个的html页面改一下 改成haha

这里我部署kind的主机网络是在openstack私网中,192.168.6.7
windows添加路由
这样就可以在浏览器访问了,但是浏览器访问好像有缓存,所以看不到haha页面和nginx页面的切换

route add 10.10.10.1 mask 255.255.255.255 10.10.10.2

linux添加路由

route add -net 192.168.6.0/24 gw 222.201.xxx.xxx

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/333595.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号