https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/
环境
阿里云ECS 2 vCPU 4 GiB 1Mbps
CentOS 7.6 64位
基本安装
Docker环境构建
- Install required packages
- set up the stable repository
- Install the latest version of Docker CE and containerd
添加yum源yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io
安装k8s命令vim /etc/yum.repos.d/k8s.repo
[k8s]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
查看镜像Runyum install -y kubelet kubeadm kubectl
kubeadm config images pull
to verify connectivity to gcr.io registries.
修改docker启动脚本(/lib/systemd/system/docker.service),找到ExecStart=xxx,在这行加入拉取镜像的站点kubeadm config images list
I0417 20:41:45.988681 31985 version.go:96] could not fetch a Kubernetes version from the internet: unable to get URL "https://dl.k8s.io/release/stable-1.txt": Get https://dl.k8s.io/release/stable-1.txt: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
I0417 20:41:45.988786 31985 version.go:97] falling back to the local client version: v1.14.1
k8s.gcr.io/kube-apiserver:v1.14.1
k8s.gcr.io/kube-controller-manager:v1.14.1
k8s.gcr.io/kube-scheduler:v1.14.1
k8s.gcr.io/kube-proxy:v1.14.1
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.3.10
k8s.gcr.io/coredns:1.3.1
配置如下https://7bezldxe.mirror.aliyuncs.com/
拉取镜像,google 镜像并不在docker库中,由于国外镜像无法拉取,需要找国内代替镜像,在阿里云的镜像站点上没有新的v1.14.1版本,使用v1.13.3代替,但由于初始化时k8s会找最新的镜像,所以pull到本地后,需要重新对镜像打标签,以便在初始化时骗过kubeadm ``` cat k8simage kube-apiserver:v1.13.3 kube-controller-manager:v1.13.3 kube-scheduler:v1.13.3 kube-proxy:v1.13.3 k8s.gcr.io/pause:3.1 k8s.gcr.io/etcd:3.3.10 k8s.gcr.io/coredns:1.3.1ExecStart=/usr/bin/dockerd --registry-mirror=https://7bezldxe.mirror.aliyuncs.com/ -H fd:// --containerd=/run/containerd/containerd.sock
for i in cat k8simage
; do
docker pull registry.aliyuncs.com/google_containers/$i
docker tag registry.aliyuncs.com/google_containers/$i k8s.gcr.io/$i
docker rmi registry.aliyuncs.com/google_containers/$i
done;
docker tag k8s.gcr.io/kube-apiserver:v1.13.3 k8s.gcr.io/kube-apiserver:v1.14.1 docker tag k8s.gcr.io/kube-controller-manager:v1.13.3 k8s.gcr.io/kube-controller-manager:v1.14.1 docker tag k8s.gcr.io/kube-scheduler:v1.13.3 k8s.gcr.io/kube-scheduler:v1.14.1 docker tag k8s.gcr.io/kube-proxy:v1.13.3 k8s.gcr.io/kube-proxy:v1.14.1
设置开机自启,并启动服务
systemctl enable kubelet && systemctl start kubelet
关闭防火墙
$ vim /etc/sysctl.conf // 添加如下内容 net.bridge.bridge-nf-call-iptables = 1
<a name="da8d9c8a"></a>
#### k8s集群初始化
kubeadm init …………………….. Your Kubernetes master has initialized successfully!
<a name="17aa86d8"></a>
#### 安装完成后的配置
kubectl 是 kubernetes 集群的命令行管理工具,kubectl 默认从 ~/.kube/config 文件读取 kube-apiserver 地址、证书、用户名等信息。
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config // master 参与工作(单机模式必备) kubectl taint nodes —all node-role.kubernetes.io/master-
如果没有配置,执行 kubectl 命令时会出错
> The connection to the server localhost:8080 was refused - did you specify the right host or port?
查看k8s集群情况(只有system pod)
kubectl get pods —all-namespaces
查看master节点情况
kubectl get nodes NAME STATUS ROLES AGE VERSION iz1imm3eq6aj5vz NotReady master 19h v1.14.1
安装网络插件,节点status可由NotReady变为Ready<br />网络策略有多种选择<br />[https://kubernetes.io/docs/concepts/cluster-administration/addons/](https://kubernetes.io/docs/concepts/cluster-administration/addons/)<br />[https://www.weave.works/docs/net/latest/kubernetes/kube-addon/](https://www.weave.works/docs/net/latest/kubernetes/kube-addon/)<br />本次使用Weave Net,可以通过以下命令安装到启用CNI的Kubernetes集群上。
kubectl apply -f “https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d ‘\n’)”
几秒钟后,Weave Net pod会在每个节点上运行,创建的任何其他pod将自动连接到Weave网络。
<a name="ccba8dcc"></a>
#### 配置tomcat RC
拉取镜像
// 查看所需要镜像 docker search tomcat // 下载tag为tomcat的images(默认版本为lasted) docker pull tomcat
cat tomcat-demo-rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: tomcat-demo ##rc名称
spec:
replicas: 1 ##pod实例个数为1
selector:
app: tomcat-demo
template: ##当运行实例个数小于replicas时候,rc会根据spec:template: 自动生成对应个数pod
metadata:
labels:
app: tomcat-demo
spec:
containers:
- name: tomcat-demo
image: tomcat ##docker镜像
ports:
- containerPort: 8080
运行
kubectl create -f tomcat-demo-rc.yaml
<a name="3bc8cf06"></a>
#### 配置tomcat service
cat tomcat-demo-svc.yaml apiVersion: v1 kind: Service metadata: name: tomcat-demo ##服务名 spec: type: NodePort ports:
- port: 8080
nodePort: 30001 ##映射端口8080:30001
selector:
app: tomcat-demo
kubectl create -f tomcat-demo-svc.yaml ``` 访问运行
[总结]