踩坑记录
macOS
- Docker for Mac 17.12+ 启用 k8s 之后会在
/usr/local/bin放入kubectl,所以你无需安装。 - Docker for Mac 自带
k8s会与minikube冲突,可以使用以下命令切换。
centos
使用国内源的时候注意要指定--kubernetes-version的版本,否则会报出一系列的超时错误,具体原因不知道,我服务器上切换到v1.23.0之后就稳定运行起来了。
centos中启动minikube的时候 --vm-driver默认值就是docker
minikube start \
--image-mirror-country=cn \
--registry-mirror='https://t9ab0rkd.mirror.aliyuncs.com' \
--image-repository='registry.cn-hangzhou.aliyuncs.com/google_containers' \
--vm-driver=docker \
--kubernetes-version v1.23.0
以上这种方式启动的--vm-driver=docker实在docker里面运行这minikube的容器,这样无法直接通过宿主机直接访问minikube里面部署的服务,无法使用NodePort来进行测试访问。
可以使用--vm-driver=none来进行minikube服务的启动。其中相关问题解答在这里如何使用minikube主机的公共ip地址访问外部服务?
centos安装 kubelet kubeadm kubectl
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=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
systemctl enable kubelet && systemctl start kubelet
## 另外,你也可以指定版本安装
## yum install kubectl-1.21.3-0.x86_64 kubeadm-1.21.3-0.x86_64 kubelet-1.21.3-0.x86_64
ps: 由于官网未开放同步方式, 可能会有索引gpg检查失败的情况, 这时请用 yum install -y --nogpgcheck kubelet kubeadm kubectl 安装
kubectl port-forward
kubectl port-forward hellok8s 3000:3000
以上命令默认监听地址为localhost。如果设置为localhost,那么k8s会监听127.0.0.1和::1这两个地址。我本地访问服务器的3000端口,会失败。
kubectl port-forward --address=0.0.0.0 hellok8s 3000:3000
以上命令可监听任意地址, 使用这个命令,我本地便可以访问服务器的3000端口了。详情可以使用kubectl port-forward --help查看.
nodePort
nodePort设置后,发现ip:端口不能访问到服务,需要执行
iptables -P FORWARD ACCEPT
命令
查看以及切换
kubectl config get-contexts
切换到docker自带的k8s
kubectl config use-context docker-for-desktop
切换到miniKube
kubectl config use-context minikube
汇总
# 应用配置文件
kubectl apply -f deployment.yaml
# 回滚到上一次版本
kubectl rollout undo deployment hellok8s-deployment
# 查看历史版本
kubectl rollout history deployment hellok8s-deployment
# 回滚到指定版本
kubectl rollout undo deployment/hellok8s-deployment --to-revision=2
# 查看Endpoint
kubectl get endpoints
# 获取 Pod 更多的信息
kubectl get pod -o wide