略
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.1443/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:41100Welcome 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



