环境两台虚拟机
192.168.42.165 |
master |
192.168.42.164 |
node1 |
修改主机名
1 修改主机名 2 master虚拟机 3 hostnamectl set-hostname master 4 node1虚拟机 5 hostnamectl set-hostname node1虚拟机 6 #两台机器都要执行 7 1.关闭防火墙 8 systemctl stop firewalld.service 关闭防火墙 9 systemctl disable firewalld.service 关闭防火墙开机自启 10 2.关闭selinux 11 setenforce 0 12 vi /etc/selinux/config 13 SELINUX=后面改成 disabled 14 3.设置华为的docker源 wget -O /etc/yum.repos.d/docker-ce.repo https://repo.huaweicloud.com/dockerce/linux/centos/docker-ce.repo 15 sudo sed -i 's+download.docker.com+repo.huaweicloud.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo 16 17 sudo yum makecache fast 18 4.安装docker-ce docker-ce-cli 19 yum install -y docker-ce-19.03.11 docker-ce-cli-19.03.11 20 5.启动docker设置开机自启并查看docker版本 21 systemctl enable docker --now 22 docker --version 23 6.设置华为k8s源 24 cat <<EOF > /etc/yum.repos.d/kubernetes.repo 25 [kubernetes] 26 name=Kubernetes 27 baseurl=https://repo.huaweicloud.com/kubernetes/yum/repos/kubernetes-el7-x86_64 28 enabled=1 29 gpgcheck=1 30 repo_gpgcheck=0 31 gpgkey=https://repo.huaweicloud.com/kubernetes/yum/doc/yum-key.gpg https://repo.huaweicloud.com/kubernetes/yum/doc/rpm-package-key.gpg 32 EOF 33 yum clean all 34 yum makecache fast 35 7.更新yum源 36 yum -y update 37 8.安装所需的软件包 38 yum install epel* -y 39 yum -y install yum-utilsdevice-mapper-persistent-data lvm2 40 9.安装基础软件包 41 yum -y install wget net-tools nfs-utils lrzsz gcc gcc-c++make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntplibaio-devel wget vim ncurses-devel autoconf automake zlib-devel python-devel epel-release openssh-serversocat ipvsadm conntrack ntpdate 42 10.关闭交换分区 43 swapoff -a 44 #永久禁用,打开/etc/fstab注释掉swap那一行。 45 11.修改内核参数 46 cat <<EOF > /etc/sysctl.d/k8s.conf 47 net.bridge.bridge-nf-call-ip6tables = 1 48 net.bridge.bridge-nf-call-iptables = 1 49 EOF 50 sysctl --system 51 12.配置hosts文件 52 192.168.42.165 master 53 192.168.42.164 node1 54 13.配置master到node1免密登录 55 在master上操作 56 ssh-keygen -t rsa #一直按回车 57 cd /root && ssh-copy-id -i .ssh/id_rsa.pub root@node1 58 14.安装kubernetes1.18.1 59 yum install kubeadm-1.18.1 kubelet-1.18.1 -y 60 systemctl enable kubelet 61 15.初始化k8s集群 62 kubeadm init --apiserver-advertise-address=192.168.30.128 63 --image-repository 64 registry.aliyuncs.com/google_containers --kubernetes-version 65 v1.18.1 --service-cidr=10.96.0.0/12 66 --pod-network-cidr=10.244.0.0/16 67 mkdir -p $HOME/.kube 68 cp -i /etc/kubernetes/admin.conf $HOME/.kube/config 69 chown $(id -u):$(id -g) $HOME/.kube/config 70 kubectl get nodes 71 [root@master ~]# kubectl get nodes 72 NAME STATUS ROLES AGE VERSION 73 master NotReady master 106m v1.18.1 74 [root@master ~]# kubeadm token generate 75 cgbo1c.hfnvut9rkh89iq81 记住这个把下面token 后面的换成这个 76 [root@master ~]# kubeadm token create cgbo1c.hfnvut9rkh89iq81 --print-join-command -- ttl=0 77 W0930 19:19:52.461302 10455 configset.go:202] WARNING: kubeadm cannot validate component configs for API groups [kubelet.config.k8s.io kubeproxy.config.k8s.io] 78 kubeadm join 192.168.42.165:6443 --token cgbo1c.hfnvut9rkh89iq81 --discovery-tokenca-cert-hash sha256:6afe10ddbde08d927f08c7c7e64efe5f10bb80ae291a0d9313a0692a04d4b363 79 #记住上面最后输出的命令在node1点执行 80 #node1执行 81 kubeadm join 192.168.42.165:6443 --token cgbo1c.hfnvut9rkh89iq81 --discovery-tokenca-cert-hash sha256:6afe10ddbde08d927f08c7c7e64efe5f10bb80ae291a0d9313a0692a04d4b363 82 kubectl label node node1(节点名称) node-role.kubernetes.io/worker=worker 83 #然后master 输入 kubectl get nodes 84 [root@master ~]# kubectl get nodes 85 NAME STATUS ROLES AGE VERSION 86 master Ready master 135m v1.18.1 87 node1 Ready worker 60m v1.18.1 88 89 #创建一个命名空间为Nginx-web 90 [root@master ~]# kubectl create namespace nginx-web #nginx-web空间名字 91 namespace/nginx-web created 92 93 #运行pod 94 kubectl run nginx-pod -n nginx-web --image=nginx --port=80 95 96 -n命名空间 97 --image 指定的镜像 98 --port 暴露的端口 99 100 kubectl expose pod nginx-pod -n nginx-web --port=80 --type=ClusterIP --target-port=80 --name=nginx-server 101 102 --port=80 指定端口 103 --target-port=80 目标端口 104 --name=nginx-server 新创建的service名字 105 -n 指定要加入的命名空间 106 107 kind 允许您指定要定义的 Kubernetes 对象的类型 108 109 #创建hostpath卷 110 [root@master ~]# cat hostpath.yaml 111 apiVersion: v1 112 kind: Pod 113 metadata: 114 name: test-pd #pod名字 115 spec: 116 containers: 117 - images: nginx #镜像 118 name: test-container #容器名字 119 volumeMounts: 120 - mountPath: /test #容器内部路径 121 name: test-volume 122 volumes: 123 - name: test-volume 124 hostPath: 125 path: /data 宿主机目录 126 type: DirectoryOrCreate 127 128 129 #创建nfs持久卷 130 master搭建nfs 131 132 node1挂载 133 134 [root@master ~]# cat nfs.yaml 135 apiVersion: v1 136 kind: Pod 137 metadata: 138 name: test-nfs 139 spec: 140 containers: 141 - image: nginx 142 name: test-container 143 volumeMounts: 144 - mountPath: /testxiaole #容器内路径 145 name: test-volume 146 volumes: 147 - name: test-volume 148 nfs: 149 server: 192.168.30.128 #服务器地址 150 path: /opt/xiaole #容器外路径 151 152 yaml编排创建命名空间 web 153 [root@master ~]# cat createweb.yaml 154 apiVersion: v1 155 kind: Namespace 156 metadata: 157 name: web 158