วิธีการติดตั้ง Kubernetes Add-on DNS และ DashBoard

Kubernetes มี DNS กับ GUI ให้ใช้งานบ้างไหม             หลังจากติดตั้ง Kubernetes แล้วการสร้าง containner โดยในที่นี้เรียกว่า pod (ใช้เรียก 1 containner หรือกลุ่มของ containner ก็ได้) ซึ่งสามารถสร้างด้วยคำสั่ง Kubectl ได้เลย (สร้างจากที่ไหนก็ได้) สำหรับผู้ที่ยังไม่ได้ติดตั้ง ต้องติดตั้งก่อนตามวิธีติดตั้ง Kubernetes บน CoreOS ตอนที่ 1[1] และ ตอนที่ 2[2]  สำหรับ Add-on ที่แนะนำจะเป็น DNS และ Dashboard ซึ่งเรียกได้ว่าจำเป็นต้องมี ไม่งั้นชีวิตจะยุ่งยากขึ้นเยอะครับ คงไม่มีใครอยากดูรายการ pod เยอะ ๆ ด้วย command line กันนะครับ  วิธีการติดตั้ง DNS-Addon[3] เข้าไปยังเครื่องที่ติดตั้ง Kubectl ไว้แล้ว ทำการสร้าง yaml file ดังนี้ (ถ้า vim วางแล้วเพี้ยนให้ใช้ nano แทน) nano dns-addon.yaml เนื้อหาในไฟล์ดังนี้ (อย่าลืมเปลี่ยน &gt; เป็น > เวลา Copy & Paste ด้วยครับ) apiVersion: v1 kind: Service metadata: name: kube-dns namespace: kube-system labels: k8s-app: kube-dns kubernetes.io/cluster-service: “true” kubernetes.io/name: “KubeDNS” spec: selector: k8s-app: kube-dns clusterIP: <DNS Cluster-IP> ports: – name: dns port: 53 protocol: UDP – name: dns-tcp port: 53 protocol: TCP — apiVersion: v1 kind: ReplicationController metadata: name: kube-dns-v20 namespace: kube-system labels: k8s-app: kube-dns version: v20 kubernetes.io/cluster-service: “true” spec: replicas: 1 selector: k8s-app: kube-dns version: v20 template: metadata: labels: k8s-app: kube-dns version: v20 annotations: scheduler.alpha.kubernetes.io/critical-pod: ” scheduler.alpha.kubernetes.io/tolerations: ‘[{“key”:”CriticalAddonsOnly”, “operator”:”Exists”}]’ spec: containers: – name: kubedns image: gcr.io/google_containers/kubedns-amd64:1.9 resources: limits: memory: 170Mi requests: cpu: 100m memory: 70Mi livenessProbe: httpGet: path: /healthz-kubedns port: 8080 scheme: HTTP initialDelaySeconds: 60 timeoutSeconds: 5 successThreshold: 1 failureThreshold: 5 readinessProbe: httpGet: path: /readiness port: 8081 scheme: HTTP initialDelaySeconds: 3 timeoutSeconds: 5 args:

Read More »

เตรียม Linux Lite ไว้ใช้เมื่อฉุกเฉิน

Linux มีหลายค่าย เช่น Ubuntu หรือ CentOS เป็นต้น เมื่อนำมาเพิ่มเติม Graphic User Interface (GUI) ให้ใช้งานได้ง่ายเช่นเดียวกับ Microsoft Windows ก็จะทำให้ Linux น่าใช้งานมาก สามารถใช้งานประจำวันได้เช่นเดียวกับ Microsoft Windows เลยนะครับ ผมจะข้ามเรื่องราวความเป็นมาของคำว่า Linux ไปนะครับ เอาเป็นว่าใครไม่รู้จักจริง ๆ ก็ Google Search เอานะครับ Linux ค่าย Ubuntu ถูกนำมาใส่ GUI โดยผู้พัฒนาหลายทีม ปัจจุบันจึงมีตัวเลือกให้ใช้งานอยู่เยอะมาก อันนี้บางคนก็ว่าเป็นข้อด้อยที่ทำให้มือใหม่ “งง” ไม่รู้จะเลือกตัวไหน ตัวที่ผมคิดว่าน่าใช้งานก็จะมี Linux Mint ซึ่งผมก็ใช้งานมาหลายปีทีเดียว วันนี้ผมพบว่ามี Trend ใหม่ที่ค่อนข้างน่าสนใจ คือ Linux Lite ครับ เป็นลิสต์ 1 ใน 5 ชื่อที่มีการโพสต์ไว้ในบล็อก “5 Lightweight Linux For Old Computers”  เป็น Linux ที่มีขนาดเล็กที่ทดสอบดูแล้วว่าใช้งานได้ดีกว่าอีก 4 ชื่อที่กล่าวถึงในบล็อกนั้น ยิ่งเล็กมากเป็นเบอร์ 1 นี่ จะไม่เหมาะสมที่จะนำมาใช้งานประจำวันได้เลย มันจะเหมาะกับงานแอดมินมากกว่า Linux Lite มีหน้าเว็บเพจที่มี Road Map ในการพัฒนาที่ชัดเจนทีเดียว ลองเข้าไปอ่านดูได้ที่ https://www.linuxliteos.com/ ครับ ทำให้ผมคิดว่าจะลองใช้งานตัวนี้แทน Linux Mint เพราะว่า Linux Lite มีขนาดที่เล็กกว่า และรู้สึกว่าใช้งานได้ง่าย ๆ เมนูก็คล้ายกับ Windows 7 ที่เราคุ้นเคย ผมตั้งชื่อบล็อกที่ผมเขียนในวันนี้ว่า “เตรียม Linux Lite ไว้ใช้เมื่อฉุกเฉิน” ผมคิดว่าพวกเราส่วนใหญ่จะใช้ Microsoft Windows กันทุกวัน แต่หากว่าวันใดที่เครื่องของเรา หรือ เพื่อนเรายกเครื่องมาให้เราช่วยดูเมื่อเกิดปัญหา หลาย ๆ ครั้งเรื่องราวมันจะจบลงที่ระบบปฏิบัติการเสียหาย ต้องล้างเครื่อง (Format) ใหม่ หรือไม่ก็อาจเกี่ยวกับ USB Flash Drive ที่ใช้เก็บไฟล์ข้อมูลที่ไปติดไวรัสคอมพิวเตอร์มาจากเครื่องคอมฯที่อื่น หากเราเรียนรู้วิธีการในวันนี้จะช่วยให้เราพร้อมที่จะจัดการปัญหาได้ทั้งแก่ตัวเองและช่วยเหลือเพื่อนของเราครับ ที่ผมจะทำก็คือผมจะติดตั้ง Linux Lite ลงไปใน USB Flash Drive เมื่อติดตั้งเสร็จแล้ว เราก็นำไปเสียบเข้าที่เครื่องคอมฯที่ BIOS สามารถตั้งค่าให้ boot USB Hard Disk ได้ เราจะต้องทำดังนี้ 1. ให้แน่ใจว่า USB Flash Drive มีขนาดไม่น้อยกว่า 8 GB และพร้อมให้ฟอร์แมตได้ 2. ในเครื่อง Windows ของเรามีโปรแกรมที่ใช้สำหรับเขียนไฟล์ .iso ลงไปใน USB Flash Drive ได้ ผมเลือกใช้โปรแกรมชื่อว่า Rufus ล่าสุดคือรุ่น 2.14 3. ไปยังเว็บไซต์ https://www.linuxliteos.com/ เพื่อดาวน์โหลดไฟล์ .iso ล่าสุดคือรุ่น 3.4 เลือกว่าจะเอา 32 Bit หรือ 64 Bit ไม่ต่างกันครับ (32 Bit จะนำไปใช้กับเครื่องที่มี RAM มากกว่า 4 GB ไม่ได้ครับ และ 64 Bit ก็จะนำไปใช้กับเครื่องเก่า ๆ ที่เมนบอร์ดเป็น 32 Bit ไม่ได้) 4. ขั้นตอนติดตั้งคือ เสียบ USB Flash Drive จากนั้น เปิดโปรแกรม Rufus เลือกตำแหน่งที่วางไฟล์ .iso

Read More »

วิธีติดตั้ง Kubernetes ด้วย CoreOS (ตอนที่ 2 Worker Node)

ถ้าต้องการระบบจัดการ docker container สักตัวต้องทำอย่างไร (ตอนที่ 2)             จากตอนก่อนหน้านี้ รู้จักกับ Kubernetes และวิธีติดตั้ง Kubernetes ด้วย CoreOS (ตอนที่ 1 Master Node)[1] ก็มาต่อด้วยการติดตั้งบนเครื่อง Worker ต่อครับ  วิธีการติดตั้ง Kubernetes Worker Node[2] ทำการติดตั้ง CoreOS บน Worker Node สร้าง directory ดังนี้ sudo mkdir -p /etc/kubernetes/ssl ทำการ copy ที่สร้างไว้ก่อนหน้านี้มาไว้ใน folder ดังนี้ File: /etc/kubernetes/ssl/ca.pem File: /etc/kubernetes/ssl/${WORKER_FQDN}-worker.pem File: /etc/kubernetes/ssl/${WORKER_FQDN}-worker-key.pem เปลี่ยน permission และ owner file เฉพาะไฟล์ -key* ดังนี้ sudo chmod 600 /etc/kubernetes/ssl/*-key.pem sudo chown root:root /etc/kubernetes/ssl/*-key.pem ทำการทำ link เผื่อให้ config แต่ละ worker เหมือน ๆ กัน cd /etc/kubernetes/ssl/ sudo ln -s ${WORKER_FQDN}-worker.pem worker.pem sudo ln -s ${WORKER_FQDN}-worker-key.pem worker-key.pem จากนั้นตั้งค่า flannel network เป็น network ที่เอาไว้เชื่อมแต่ละ pod ให้สามารถคุยกันได้ข้ามเครื่อง เพื่อสร้างวง virtual ip ให้กับ pod ดังนี้ sudo mkdir /etc/flannel ทำการสร้างไฟล์ option.env sudo vim /etc/flannel/options.env เนื้อหาในไฟล์ดังนี้ FLANNELD_IFACE=<Worker IP> FLANNELD_ETCD_ENDPOINTS=http://<Master IP>:2379,http://<Node1 IP>:2379,http://<Node2 IP>:2379 จากนั้นทำการสร้าง flannel service ดังนี้ sudo mkdir -p /etc/systemd/system/flanneld.service.d/ sudo vim /etc/systemd/system/flanneld.service.d/40-ExecStartPre-symlink.conf เนื้อหาในไฟล์ดังนี้ [Service] ExecStartPre=/usr/bin/ln -sf /etc/flannel/options.env /run/flannel/options.env จากนั้นทำการตั้งค่า docker เพื่อกำหนดให้ใช้งานผ่าน flannel โดยสร้างไฟล์ config ดังนี้ sudo mkdir -p /etc/systemd/system/docker.service.d sudo vim /etc/systemd/system/docker.service.d/40-flannel.conf เนื้อหาในไฟล์ดังนี้ [Unit] Requires=flanneld.service After=flanneld.service [Service] EnvironmentFile=/etc/kubernetes/cni/docker_opts_cni.env โดยที่ทำสร้างไฟล์ docker_opts_cni.env ขึ้นมาประกอบดังนี้ sudo mkdir -p /etc/kubernetes/cni sudo vim /etc/kubernetes/cni/docker_opts_cni.env เนื้อหาในไฟล์ดังนี้ DOCKER_OPT_BIP=”” DOCKER_OPT_IPMASQ=”” จากนั้นทำการ restart docker service สักรอบดังนี้ sudo systemctl restart docker หนังจากนั้นทำการสร้าง config ไฟล์สุดท้ายสำหรับ flannel ดังนี้ sudo mkdir -p /etc/kubernetes/cni/net.d sudo vim /etc/kubernetes/cni/net.d/10-flannel.conf เนื้อหาในไฟล์ดังนี้ { “name”: “podnet”, “type”: “flannel”, “delegate”: { “isDefaultGateway”: true } } ทำการ start flannel service

Read More »