此项目是k8s单节点部署案例,为个人学习相关期间做的一个简要demo, 涉及到docker,springboot,k8s知识,建议学习完基本概念用法,在参照demo进行实际操作学习。
- centos7.3 2核+4G #可以使用windows自带的Hyper-v进行虚拟机搭建
yum install epel-release.noarch -y
yum install -y vim wget git net-tools htop
systemctl stop firewalld
systemctl disable firewalld
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0
getenforce
swapoff -a
vim /etc/fstab #注释掉带有swap那行
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system #查看设置是否成功
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O/etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce-18.06.1.ce-3.el7
systemctl enable docker && sudo systemctl start docker
usermod -aG docker `whoami`
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
yum install -y kubeadm-1.14.1 kubectl-1.14.1 kubelet-1.14.1 --disableexcludes=kubernetes
systemctl enable kubelet
kubeadm init \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.14.1 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
通过kubectl get nodes可以查看当前node为NotReady状态,需要安装flannel
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml
镜像可能会下载的比较慢,可以通过docker pull quay.io/coreos/flannel:v0.11.0-amd64拉取并查看进度
通过kubectl get pods -n kube-system查看各个pods是否都为run状态,kubectl get nodes查看master状态是否为ready
kubectl taint nodes --all node-role.kubernetes.io/master- #输出 ... untainted, 证明设置成功
kubectl get deploy,pod,svc -n kube-system
FROM centos:7 #使用centos7作为基础镜像
ADD ./jdk-8u191-linux-x64.tar.gz /usr/local/ #将jdk8上传到镜像并解压到指定目录
ENV JAVA_HOME /usr/local/jdk1.8.0_191
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $PATH:$JAVA_HOME/bin
mvn clean package # jar包在target目录下
COPY ./demo-0.0.1-SNAPSHOT.jar /usr/local/demo-0.0.1-SNAPSHOT.jar
CMD ["java","-jar","/usr/local/demo-0.0.1-SNAPSHOT.jar",">" ,"log.log","&"]
EXPOSE 8080
docker build -t .
registry.cn-shenzhen.aliyuncs.com/18616568207/springboot-demo:v1
k8s文件夹中allen.yml为创建的namespace文件,包含namesapce版本,名称等信息
参考k8s中nginx服务,spingboot-demo服务的yml文件编写,在nginx服务中绑定本机ip
参考k8s文件夹中具体的创建参数设置,副本数都设置为1
kubectl apply -f ./k8s/namespace
kubectl apply -f ./k8s/service
kubectl apply -f ./k8s/configmap
kubectl apply -f ./k8s/deployment