Kubeadm建立私有集群
自己搭建了一个K8S的集群,用kubeadm。参照官网安装完成之后,要先运行以下命令禁止swap分区sudo swapoff -asudo free -m然后运行kubeadm init启动,这里会遇到无法拉取k8s.gcr.io的镜像的问题,我的解决办法是用阿里云来拉取镜像,具体可以见我以前的博客,利用阿里云来加速Kubeflow的安装_gzroy的博客-CSDN博客之后就可以运行命令来启动集群
自己搭建了一个K8S的集群,用kubeadm。参照官网安装完成之后,要先运行以下命令禁止swap分区
sudo swapoff -a
sudo free -m
然后运行kubeadm init启动,这里会遇到无法拉取k8s.gcr.io的镜像的问题,我的解决办法是用阿里云来拉取镜像,具体可以见我以前的博客,利用阿里云来加速Kubeflow的安装_gzroy的博客-CSDN博客
之后就可以运行命令来启动集群了,这里我指定了版本,因为我之前拉取的镜像都是这个版本的:
sudo kubeadm init --pod-network-cidr=192.168.0.0/16 --kubernetes-version 1.20.5 --image-repository registry.aliyuncs.com/google_containers
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
安装Calico
kubectl create -f https://projectcalico.docs.tigera.io/manifests/tigera-operator.yaml
kubectl create -f https://projectcalico.docs.tigera.io/manifests/custom-resources.yaml
测试一下运行一个应用,这里我用Quarkus写了一个简单的helloworld,实现了访问本地9090端口的/hello路径,回复一个hello message. 把应用打包之后push到本地的镜像中。
因为我的k8s集群只有一个主节点,默认是不能在主节点调度应用的,需要运行以下命令:
kubectl taint nodes --all node-role.kubernetes.io/master-
然后创建一个deployment.yaml文件,描述要创建一个replicaset的部署:
apiVersion: apps/v1
kind: Deployment
metadata:
name: quarkus-test
spec:
selector:
matchLabels:
app: quarkus-test-app
replicas: 2
template:
metadata:
labels:
app: quarkus-test-app
spec:
containers:
- name: quarkus-test
image: cn.roygao/quarkus_test:latest
imagePullPolicy: IfNotPresent
ports:
- containerPort: 9090
protocol: TCP
执行命令kubectl apply -f deployment.yaml,之后调用kubectl get pods -A即可看到新创建的两个quarkus-test的pod运行。如果我们删除某一个pod,可以看到k8s会自动新生成一个pod,始终维持2个pod运行。
执行以下命令创建一个NodePort service,使得外部可以通过节点的端口访问我们的应用
kubectl expose deployment quarkus-test --type=NodePort --name=quarkus-test-service
调用kubectl describe svc quarkus-test-service可以查看NodePort,之后我们就可以通过访问节点的外部IP加上NodePort来访问应用了。
更多推荐
所有评论(0)