可以直接使用官网的web版,打开下面链接,点击Launch Terminal
https://kubernetes.io/docs/tutorials/hello-minikube/
等待加载完毕,执行命令
kubectl get pods -n kube-system
结果如下:
这里可以看到k8s的一些关键组件已经全部安转完成。
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
关闭selinux:
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0
关闭swap:
swapoff -a $ 临时
vim /etc/fstab $ 永久
将桥接的IPv4流量传递到iptables的链:
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
安装docker
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 && systemctl start docker
docker --version
添加阿里云yum源
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF
安装kubeadm,kubelet和kubectl
yum install -y kubelet-1.15.0 kubeadm-1.15.0 kubectl-1.15.0
systemctl enable kubelet
sudo systemctl enable kubelet
sudo systemctl start kubelet
kubeadm init \
--apiserver-advertise-address=192.168.10.100 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.15.0 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16
注意:记录打印的最后一句话,如下
kubeadm join 192.168.10.100:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:3546d6256e9c3ea1c8224f45637fedb90870b21b0ec41a355e2fb8de46d5962d
使用kubectl工具:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl get nodes
配置flannel网络
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
修改kube-flannel.yaml中的网络和kubeadm.conf中的podsubne一致
然后加载配置文件
kubectl apply -f kube-flannel.yml
等待status 变为 ready
kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master Ready master 24h v1.15.0
如果镜像拉取失败,手动拉取镜像
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
将master中的admin.conf 拷贝到node中
scp /etc/kubernetes/admin.conf root@192.168.10.101:/home/wd/
在node中配置,并加入集群
mkdir -p $HOME/.kube
sudo cp -i $HOME/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubeadm join 192.168.10.100:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:3546d6256e9c3ea1c8224f45637fedb90870b21b0ec41a355e2fb8de46d5962d
查看节点是否加入成功
[root@k8s-master wd]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master Ready master 24h v1.15.0
k8s-node1 Ready <none> 24h v1.15.0
创建mysql_repl.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: mysql
spec:
replicas: 1 #Pod副本的期待数量
selector:
app: mysql #符合目标的Pod拥有此标签
template: #根据此模板创建Pod的副本(实例)
metadata:
labels:
app: mysql #Pod副本拥有的标签,对应RC的Selector
spec:
containers: #Pod内容器的定义部分
- name: mysql #容器的名称
image: hub.c.163.com/library/mysql #容器对应的Docker image
ports:
- containerPort: 3306 #容器应用监听的端口号
env: #注入容器内的环境变量
- name: MYSQL_ROOT_PASSWORD
value: "123456"
通过文件部署应用
部署命令
kubectl create -f mysql_repl.yaml
等待一段时间后查看
kubectl get pods
查看描述
kubectl describe pod mysql
此时mysql部署完成,但是外网无法访问
创建mysql_serc.yaml 文件
apiVersion: v1
kind: Service
metadata:
name: mysql
spec:
type: NodePort
ports:
- port: 3306
nodePort: 30001
selector:
app: mysql
部署
kubectl create -f mysql_serc.yaml
查看端口,此时端口映射完毕,查看外网端口
kubectl get service
获取dashboard 的yaml文件
wget wget
https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
修改文件
vim kubernetes-dashboard.yaml
修改镜像image字段如下
image: registry.aliyuncs.com/google_containers/kubernetes-dashboard-amd64:v1.10.1
修改service 的spec字段如下
spec:
ports:
- port: 443
targetPort: 8443
nodePort: 30000
selector:
k8s-app: kubernetes-dashboard
type: NodePort
运行文件
kubectl apply -f kubernetes-dashboard.yaml
查看端口映射情况,如下表示正常运行
kubectl -n kube-system get service
kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 24h
kubernetes-dashboard NodePort 10.102.240.20 <none> 443:30000/TCP 85
在火狐浏览器中访问 https://你的id:30000,会提示kubeconfig或者token
此时需要
创建一个SA Service Account
kubectl create serviceaccount dashboard-admin -n kube-system
创建一个Cluster rolebinding
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
//查看token 复制打印出的token,粘贴到浏览器中的token中就可以登录了
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')