
k8s-kubeadm1.7安装
参考文章
mac 重新安装了虚拟机 需要更新 know_host 文件
1 | ssh-keygen -R 172.16.182.130 |
- 时间同步 :
yum install -y ntpdate
ntpdate ntp.api.bz
安装1.7 kube版本
1 | yum install -y kubeadm-1.17.3-0 kubelet-1.17.3-0 kubectl-1.17.3-0 |
下载 flannel 文件
1 | wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml |
下载 flannel v12.0版本的镜像
1 | 打上标签: |
安装准备好一些主机的功能,进行关闭主机然后再克隆
- 添加主机名与IP对应关系(记得设置主机名):
1 | $ cat /etc/hosts |
最新文件
1
2
3scp ~/Desktop/1.7flannel.yml root@172.16.182.130:/root/kube-flannel.yml
> kubectl apply -f ./kube-flannel.yml设置 hostname
1
2
3
4
5
6
7
8
9
10
11hostnamectl set-hostname k8s-master
hostnamectl set-hostname k8s-node1
hostnamectl set-hostname k8s-node2
hostnamectl set-hostname c-k8s-master
hostnamectl set-hostname c-k8s-node1
hostnamectl set-hostname c-k8s-node2
hostnamectl set-hostname c-k8s-node3
hostnamectl set-hostname c-k8s-node3
执行的操作 : 1 master 2 node
- init master 节点
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31kubeadm init \
--apiserver-advertise-address=172.16.182.130 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.17.3 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16
> systemctl enable kubelet
result :
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 172.16.182.130:6443 --token 8ljs63.gnehsbfhvt8vbp4m \
--discovery-token-ca-cert-hash sha256:879064f5fe917a84788cfd5601ab29a666167f37881ea0084c707afc82164fc1
使用kubectl工具
1 |
|
添加网络服务: flannel
参考文章 : https://yq.aliyun.com/articles/702158
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17docker pull quay.io/coreos/flannel:v0.12.0-arm64
kubectl apply -f ./kube-flannel.yml
来自一篇文章:
推荐等到 node1 状态 Ready 之后再安装 flannel
因为 flannel 中的有些镜像在 quay-mirror.qiniu.com,国内无法访问,故可以转到阿里云镜像中心获取,然后再将其重新打 tag 为 quay.io/coreos/flannel:v0.11.0-amd64 中的名称即可。
[root@master ~]# cat processFlannelImage.sh
#!/bin/bash
docker pull quay-mirror.qiniu.com/coreos/flannel:v0.11.0-amd64
docker tag quay-mirror.qiniu.com/coreos/flannel:v0.11.0-amd64 quay.io/coreos/flannel:v0.11.0-amd64
[root@master ~]# chmod +x processFlannelImage.sh
[root@master ~]# ./processFlannelImage.sh
- 查看详情内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
[root@k8s-master ~]# kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-9d85f5447-492bj 0/1 Pending 0 8m16s
kube-system coredns-9d85f5447-bwzpq 0/1 Pending 0 8m16s
kube-system etcd-k8s-master 1/1 Running 0 8m12s
kube-system kube-apiserver-k8s-master 1/1 Running 0 8m12s
kube-system kube-controller-manager-k8s-master 1/1 Running 0 8m12s
kube-system kube-flannel-ds-amd64-qc7hw 0/1 Init:0/1 0 3m39s
kube-system kube-flannel-ds-amd64-r6wsc 0/1 Init:0/1 0 4m21s
kube-system kube-flannel-ds-amd64-s964n 0/1 Init:0/1 0 3m33s
kube-system kube-proxy-587kh 1/1 Running 0 3m39s
kube-system kube-proxy-pnhfw 1/1 Running 0 3m33s
kube-system kube-proxy-tfz8j 1/1 Running 0 8m16s
kube-system kube-scheduler-k8s-master 1/1 Running 0 8m12s
查看详情:
kubectl describe pods kube-flannel-ds-amd64-qc7h -n kube-system
发现在 docker pull 镜像内容:
docker pull quay.io/coreos/flannel:v0.12.0-amd64
mac 机器下载比较快:
docker save -o ~/Desktop/k8s/flannel/f-image quay.io/coreos/flannel:v0.12.0-amd64
scp ~/Desktop/k8s/flannel/f-image root@172.16.182.139:/root/flannel
scp ~/Desktop/k8s/flannel/f-image root@172.16.182.140:/root/flannel
终于成功的把网络flannel装到 服务上
进行简单的测试 nginx 部署到3个节点上的 k8s 发布:
pod 文件内容 nginx-deployment.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21apiVersion: 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执行 pod 指令 :
kubectl apply -f nginx-pod.yaml
service 文件内容 nginx-service.yaml:
1
2
3
4
5
6
7
8
9
10
11
12
13apiVersion: v1
kind: Service
metadata:
name: nginx-service
labels:
app: nginx
spec:
ports:
- port: 88
targetPort: 80
selector:
app: nginx
type: NodePort执行 service 指令 :
kubectl create -f nginx-service.yaml
为了让主机访问 k8s 提供的nginx 服务,我们需要在 nginx-service.yaml 规范 spec 中指定 type 为 NodePort为了让主机访问 k8s 提供的nginx 服务,我们需要在 nginx-service.yaml 规范 spec 中指定 type 为 NodePort
查看服务执行的情况:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17> kubectl get pod,svc
NAME READY STATUS RESTARTS AGE
pod/nginx-deployment-54f57cf6bf-69b29 1/1 Running 0 2m29s
pod/nginx-deployment-54f57cf6bf-ch6dg 1/1 Running 0 2m29s
pod/nginx-deployment-54f57cf6bf-lzmkh 1/1 Running 0 2m29s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.1.0.1 <none> 443/TCP 57m
service/nginx-service NodePort 10.1.167.218 <none> 88:32342/TCP 18s
+ 查看服务的详情:
```text
> kubectl get service/nginx-service
service/nginx-service NodePort 10.1.167.218 <none> 88:32342/TCP 18s根据信息,可以访问: MasterIP:NodePort –> 172.16.182.130:32342 正常的访问.
1
2
3进入 node 节点下进行
docker logs -f <id>
打印日志信息 可以正常的负载均衡到3台的 nginx 的机器上
总结
1 | 不需要配置 ssh, 有些文档中写需要配置,但是没必要 |
感谢您的阅读,本文由 左之右 版权所有。如若转载,请注明出处:左之右(https://zuoyoulai.github.io/2020/03/20/k8s-kubeadm1-7%E5%AE%89%E8%A3%85/)