kubernetes
vm centos7.8
初始化docker
添加docker组,将当前用户加入该组,如admin
sudo groupadd docker
sudo usermod -aG docker ${USER}
sudo systemctl restart docker
su root //需要切换下用户,生效配置
su ${USER}
安装kubectl 1.19.0-0原生包管理器方式
#添加国内yum源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
[root@minikube ~]# yum install kubectl -y
自动补全命令
在linux上
yum install -y bash-completion
[admin@minikube k8s]$ locate bash-completion
/usr/share/bash-completion
/usr/share/bash-completion/bash_completion
/usr/share/bash-completion/completions
/usr/share/bash-completion/helpers
source /usr/share/bash-completion/bash_completion
source <(kubectl completion bash)
在mac上
$ brew install bash-completion
$ source $(brew --prefix)/etc/bash_completion
$ source <(kubectl completion bash)
安装minikube
curl -Lo minikube https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/v1.13.0/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
启动报错
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9fz9qO9R-1600851771929)(…/AppData/Roaming/Typora/typora-user-images/1599725956974.png)]
安装
yum install epel-release
yum install conntrack-tools
重新启动
su - admin
minikube start --registry-mirror=https://registry.docker-cn.com --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers --vm-driver=docker --alsologtostderr -v=8 --base-image registry.cn-hangzhou.aliyuncs.com/google_containers/kicbase:v0.0.10
启动控台
minikube dashboard
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jktQfJmG-1600851771932)(…/AppData/Roaming/Typora/typora-user-images/1599879156683.png)]
#暴露端口42026 ,外网可以访问
[admin@minikube ~]$ nohup kubectl proxy --port=42026 --address='192.168.9.159' --accept-hosts='^.*' > /dev/null 2>&1 &
#扩展
kubectl proxy --port=42026 --address='192.168.9.159' --accept-hosts='^192.168.9.159$'
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OJeYb2nh-1600851771934)(…/AppData/Roaming/Typora/typora-user-images/1599879267063.png)]
打开网址:http://192.168.9.159:42026/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/#/cluster?namespace=default
创建hello-node文件夹,创建server.js
var http = require('http');
var handleRequest = function(request, response) {
console.log('Received request for URL: ' + request.url);
response.writeHead(200);
response.end('Hello World!');
};
var www = http.createServer(handleRequest);
www.listen(8080);
创建docker 容器
Dockerfile
FROM node:6.9.2
EXPOSE 8080
COPY server.js .
CMD ["node","server.js"]
请确保使用Minikube Docker守护进程:
eval $(minikube docker-env)
撤销
eval $(minikube docker-env -u)
使用Minikube Docker守护进程build Docker镜像:
docker build -t hello-node:v1 .
创建Deployment
查看使用方法:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ytplmc0V-1600851771937)(…/AppData/Roaming/Typora/typora-user-images/1600153058773.png)]
[admin@minikube hellnode]$ kubectl create deployment hello-node --image=hello-node:v1 --port=8080 --replicas=3
deployment.apps/hello-node created
[admin@minikube hellnode]$ kubectl get deployments
NAME READY UP-TO-DATE AVAILABLE AGE
hello-node 3/3 3 3 13s
创建Service
使用expose NodePort
[admin@minikube hellnode]$ kubectl expose deployment hello-node --type=NodePort
service/hello-node exposed
[admin@minikube hellnode]$ kubectl get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hello-node NodePort 10.101.33.61 <none> 8080:31502/TCP 21s
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 102m
minikube 默认是起 virtualbox/vm,起了个子网,而你的 nodeport 是暴露在 虚拟机的子网 ip 上,应该只有你台 VPS 可以访问。你搞个映射。 我建议你不用 minikube 了直接 kubeadmin 装个单节点玩玩
minikube service hello-node
更新应用
[admin@minikube hellnode]$ vim server.js
[admin@minikube hellnode]$ docker build -t hello-node:v2 .
Sending build context to Docker daemon 3.072kB
Step 1/4 : FROM node:6.9.2
....
Successfully built b72dd589fd09
Successfully tagged hello-node:v2
[admin@minikube hellnode]$ kubectl set image deployment/hello-node hello-node=hello-node:v2
deployment.apps/hello-node image updated
[admin@minikube hellnode]$ minikube service hello-node
|-----------|------------|-------------|-------------------------|
| NAMESPACE | NAME | TARGET PORT | URL |
|-----------|------------|-------------|-------------------------|
| default | hello-node | 8080 | http://172.17.0.3:31502 |
|-----------|------------|-------------|-------------------------|
* Opening service default/hello-node in default browser...
- http://172.17.0.3:31502
[admin@minikube hellnode]$ curl http://172.17.0.3:31502
[admin@minikube hellnode]$ curl http://172.17.0.3:31502
Hello World!你好
清理删除
现在可以删除在集群中创建的资源
kubectl delete service hello-node
kubectl delete deployment hello-node
或者停止minikube
minikube stop
deployment nginx
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R2rYQ1bN-1600851771939)(…/AppData/Roaming/Typora/typora-user-images/1600840873566.png)]
#vim nginx-deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
status: {}
#创建deployment
[admin@minikube k8s]$ kubectl create -f nginx-deployment.yml
deployment.apps/nginx-deployment created
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
status: {}
#创建deployment
[admin@minikube k8s]$ kubectl create -f nginx-deployment.yml
deployment.apps/nginx-deployment created