测试机:使master节点同时作为node节点
角色 | ip |
---|---|
master/node | 192.168.56.201 |
注:master节点加入/退出node中:
#master加入node
kubectl taint node master主机名 node-role.kubernetes.io/master-
#master退出node
kubectl taint node master主机名 node-role.kubernetes.io/master="":NoSchedule
1,拉取k8s:1.15.1的7个镜像
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.15.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.15.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.15.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.15.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.3.10
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.3.1
################
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.15.1 k8s.gcr.io/kube-apiserver:v1.15.1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.15.1 k8s.gcr.io/kube-controller-manager:v1.15.1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.15.1 k8s.gcr.io/kube-scheduler:v1.15.1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.15.1 k8s.gcr.io/kube-proxy:v1.15.1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1 k8s.gcr.io/pause:3.1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.3.10 k8s.gcr.io/etcd:3.3.10
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.3.1 k8s.gcr.io/coredns:1.3.1
2,安装docker
https://blog.csdn.net/eyeofeagle/article/details/85015303
配置docker运行参数:修改Cgroup Driver类型:
cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://yywkvob3.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
#重启docker
systemctl daemon-reload
systemctl restart docker
3, 安装k8s软件包
#1,配置环境
service firewalld stop
setenforce 0
swapoff -a
cat >> /etc/sysctl.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
modprobe br_netfilter
sysctl -p
#2, 配置yum源
cat >/etc/yum.repo.d/k8s.repo <<EOF
[kubernetes]
name=kubernetes Repo
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
enabled=1
EOF
#3,安装k8s
yum -y install wget kubelet kubeadm kubectl
systemctl enable kubelet
cat > /etc/sysconfig/kubelet <<EOF
KUBELET_EXTRA_ARGS="--node-ip=192.168.56.201"
EOF
systemctl start kubelet
#4, 配置flannel网络
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl apply -f kube-flannel.yml
#5,初始化k8s集群
kubeadm init --kubernetes-version=1.15.1 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.56.201 --ignore-preflight-errors=NumCPU
#6,配置k8s环境变量
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
#7, 查看结果
[root@docker k8s]# kubectl get nodes --all-namespaces
NAME STATUS ROLES AGE VERSION
docker Ready master 125m v1.15.2
4, 验证结果
获取mysql.yaml配置,使用k8s运行mysql:https://www.cnblogs.com/zoulixiang/p/9910337.html
[root@docker k8s]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
docker Ready master 102m v1.15.2
[root@docker k8s]# kubectl get pods
NAME READY STATUS RESTARTS AGE
mysql-rc-vpczb 1/1 Running 0 67m
nginx-7c45b84548-wblkc 1/1 Running 0 86m
[root@docker k8s]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 105m
mysql-svc NodePort 10.110.110.209 <none> 3306:30060/TCP 67m
nginx NodePort 10.107.239.151 <none> 80:30569/TCP 78m
[root@docker k8s]# wget docker:30569
--2019-08-13 17:48:26-- http://docker:30569/
正在解析主机 docker (docker)... 192.168.56.201
正在连接 docker (docker)|192.168.56.201|:30569... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:612 [text/html]
正在保存至: “index.html”
100%[===================================>] 612 --.-K/s 用时 0.001s
2019-08-13 17:48:26 (1.13 MB/s) - 已保存 “index.html” [612/612])
[root@docker k8s]# kubectl exec -it svc/mysql-svc bash
root@mysql-rc-vpczb:/# mysql -uroot -p123456
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.5.62 MySQL Community Server (GPL)
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)
5, 安装dashboard
wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.5.1/src/deploy/kubernetes-dashboard.yaml
#修改image: registry.cn-hangzhou.aliyuncs.com/google_containers/kubernetes-dashboard-amd64:v1.10.0
#应用配置
kubectl create -f kubernetes-dashboard.yaml
#[root@docker ui]# kubectl get pod -A -o wide |grep dash
#kube-system kubernetes-dashboard-7d46676dcb-2zrs7 1/1 Running 0 10m 10.244.1.9 docker <none> <none>
#[root@docker ~]# kubectl get svc -A -o wide |grep dash
#kube-system kubernetes-dashboard NodePort 10.1.39.194 <none> 443:30389/TCP 6h24m k8s-app=kubernetes-dashboard
#创建登陆账户
kubectl create serviceaccount dashboard-admin -n kube-system
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
#浏览器访问 https://IP:30389, 输入登陆密钥:
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')